See*_*uth 17 ruby rake ruby-on-rails rake-task ruby-on-rails-4
我有这个奇怪的问题,如果我这样做:
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
Run Code Online (Sandbox Code Playgroud)
第一项任务将完美无缺.我甚至可以放在binding.pry一边做,Xaaron::Role并获得有关角色的信息.但第二项任务爆炸说明NameError: uninitialized constant Xaaron::Role
我在我的主应用程序中运行每个任务(因为这些任务在引擎内)为:bin/rake xaaron:get_roles和bin/rake xaaron:get_role.
为什么第二个爆炸但第一个不爆炸?是否存在争论的事情?
更新
我应该注意,我可以bin/rails c在使用所述引擎的主应用程序中执行,Xaaron::Role并获取有关Roles表的信息.
DGM*_*DGM 45
我不确定为什么要么工作,但如果这是rails并且那些是rails模型,那么你的任务应该取决于环境:
task :get_roles => [ :environment ] do
Run Code Online (Sandbox Code Playgroud)
通过依赖于:environment任务,它首先加载rails.
也可以看看:
您还可以将rake任务运行为
bundle exec rake environment xaaron:get_role
Run Code Online (Sandbox Code Playgroud)
这将首先加载Rails环境。
| 归档时间: |
|
| 查看次数: |
9602 次 |
| 最近记录: |