モジュールでメソッドを共有し、そのようなモジュールを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
。
ただし、テストを実行するたびに実行する必要があるシードのようなものである場合は、これを general に追加することを検討する必要があります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 タスクはありません。