Ответ 1
Я не уверен, почему это работает, но если это рельсы, и это модели рельсов, ваши задачи должны зависеть от среды:
task :get_roles => [ :environment ] do
В зависимости от задачи: environment сначала загружает рельсы.
смотрите также:
У меня есть эта странная проблема, если я это сделаю:
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
и получить информацию о Xaaron::Role
. Но вторая задача взрывается, указывая NameError: uninitialized constant Xaaron::Role
Я запускаю каждую задачу в своем основном приложении (так как эти задачи находятся внутри движка) как: bin/rake xaaron:get_roles
и bin/rake xaaron:get_role
.
Почему второй взрывается, но первый нет? Есть ли какая-либо аргументация, которая обсуждается?
Обновить
Я должен отметить, что я могу сделать bin/rails c
в главном приложении, которое использует указанный движок, и сделать Xaaron::Role
и получить информацию о таблице Roles.
Я не уверен, почему это работает, но если это рельсы, и это модели рельсов, ваши задачи должны зависеть от среды:
task :get_roles => [ :environment ] do
В зависимости от задачи: environment сначала загружает рельсы.
смотрите также:
Вы также можете запустить грабли как
bundle exec rake environment xaaron:get_role
это сначала загрузит среду Rails.