Вы разделяете методы в модуле и помещаете такой модуль в папку lib
.
Что-то вроде lib/fake_data.rb
, содержащего
module FakeData
def random_address
[Faker::Address.street_address, Faker::Address.city].join("\n")
end
module_function
end
и внутри вашей задачи rake просто требуйте модуль и вызывайте FakeData.random_address
.
Но, если это как семя, которое вам нужно делать каждый раз, когда вы запускаете свои тесты, вам следует рассмотреть возможность добавления этого к вашему общему before all
.
Например. мой spec_helper
выглядит так:
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
include SetupSupport
config.before(:all) do
load_db_seed
end
end
а модуль SetupSupport
определен в spec/support/setup_support.rb
и выглядит следующим образом:
module SetupSupport
def load_db_seed
load(File.join(Rails.root, 'db', 'seeds.rb'))
end
end
Не уверен, нужно ли вам загружать сиды или вы уже это делаете, но это идеальное место для создания необходимых поддельных данных.
Обратите внимание, что мой класс поддержки установки определен в spec/support
, потому что код имеет отношение только к моим спецификациям, у меня нет задачи rake, также требующей того же кода.
person
nathanvda
schedule
25.11.2013