Я пытаюсь создать пользовательскую задачу, но, похоже, у меня нет доступа к моим моделям. Я думал, что это было что-то неявно включенное в задачу рельсов.
У меня есть следующий код в lib / tasks / test.rake:
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
А вот как выглядит моя родительская модель:
class Parent < ActiveRecord::Base
has_many :children
end
Это довольно простой пример, но я получаю следующую ошибку:
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
Любые идеи? Спасибо
ruby-on-rails
activerecord
rake
task
gmoniey
источник
источник
new_task
текущую среду? какова текущая стоимость:environment
? гугл не помогает.new_task
сначала загрузите среду (загрузите ваши модели), а затем запустите new_task.вам может потребоваться ваша конфигурация (в которой должны быть указаны все необходимые модели и т. д.)
например:
в качестве альтернативы вы можете просто требовать каждого отдельно, но у вас могут быть проблемы с окружающей средой, не настроенные и т. д.)
источник
Когда вы начнете писать свои рейковые задачи, используйте генератор, чтобы заглушить их для вас.
Например:
Вы получите заглушку, созданную в lib / tasks, которая называется
my_tasks.rake
(очевидно, используется ваше собственное пространство имен.), Которая будет выглядеть следующим образом:Все ваши модели рельсов и т. Д. Будут доступны для текущей среды из каждого блока задач, если только вы не используете производственную среду, и в этом случае вам потребуются конкретные модели, которые вы хотите использовать. Сделайте это в теле задачи. (IIRC это варьируется между различными версиями Rails.)
источник
environment
это требуется как зависимость, а затем сказать синтаксис, а не поощрять OP полагаться на «магические» утилиты, которые даже не используют магию?С новым синтаксисом хэша ruby (Ruby 1.9) среда будет добавлена в задачу rake следующим образом:
источник
Зависимость: environment достаточно корректно вызывается, но rake все еще может не знать о других драгоценных камнях, от которых зависят ваши модели - в одном из моих случаев - protected_attributes.
Ответ заключается в следующем:
Это гарантирует, что среда включает в себя любые драгоценные камни, указанные в вашем Gemfile.
источник
Создайте задачу, используя следующую команду (пространство имен с именем задачи):
Используйте синтаксис ниже, чтобы добавить логику:
Запустите вышеуказанную задачу, используя следующую команду:
или
источник