私はこの奇妙な問題を抱えています:
namespace :xaaron do
task :get_roles do
roles = Xaaron::Role.all
puts roles
end
task :get_role, [:name] do |t, args|
role = Xaaron::Role.find(args[:name].parameterize)
puts role
end
end
最初のタスクは完全にうまく機能します。 binding.pry
サイドでXaaron::Role
とロールに関する情報を取得します。しかし、2番目のタスクはNameError: uninitialized constant Xaaron::Role
メインのアプリで(これらのタスクはエンジン内にあるため)各タスクを次のように実行します:bin/rake xaaron:get_roles
およびbin/rake xaaron:get_role
。
なぜ2つ目は爆発していますが、1つ目は爆発していませんか?議論に続くスコープの問題はありますか?
更新
bin/Rails c
上記のエンジンを使用するメインアプリでXaaron::Role
とRolesテーブルに関する情報を取得します。
どちらが機能するのかはわかりませんが、これがRailsであり、それらがRailsモデルである場合、タスクは環境によって異なります。
task :get_roles => [ :environment ] do
:environmentタスクに依存することにより、最初にRailsをロードします。
また見なさい:
次のようにrakeタスクを実行することもできます
bundle exec rake environment xaaron:get_role
これは最初にRails環境をロードします。