Почему я получаю uninitialized Constant для задачи рейка, Rails 4.1.8

У меня есть эта странная проблема, если я это сделаю:

  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.

Ответы

Ответ 1

Я не уверен, почему это работает, но если это рельсы, и это модели рельсов, ваши задачи должны зависеть от среды:

task :get_roles => [ :environment ] do

В зависимости от задачи: environment сначала загружает рельсы.

смотрите также:

Какова задача "окружающей среды" в Rake?

Ответ 2

Вы также можете запустить грабли как

bundle exec rake environment xaaron:get_role

это сначала загрузит среду Rails.