我寫了一個Ruby腳本,我想作爲Rake任務運行。以下是我的data.rake
文件:Rake任務中的這個Ruby腳本爲什麼不能使用Rails環境?
namespace :data do
namespace :fixtures do
desc "Save fixtures to JSON file"
task :file do
bundle exec ruby "#{Rails.root}/lib/tasks/get_fixtures.rb"
end
desc "Save fixtures to DB"
task db: :environment do
# puts League.all.inspect
bundle exec ruby "#{Rails.root}/lib/tasks/save_fixtures_to_db.rb"
end
end
end
在data:fixutres:db
任務時,註釋行使用League.new
它的內部時,工作正常,並表示聯盟的數據作爲一個ActiveRecord的查詢,而Ruby腳本引發以下錯誤:
`save_to_db': uninitialized constant League (NameError)
from /home/fred/workspace/plprediction/lib/tasks/save_fixtures_to_db.rb:134:in `<main>'
rake aborted!
Command failed with status (1): [/home/fred/.rvm/rubies/ruby-2.2.1/bin/ruby...]
/home/fred/workspace/plprediction/lib/tasks/data.rake:11:in `block (3 levels) in <top (required)>'
/home/fred/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval'
/home/fred/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => data:fixtures:db
(See full trace by running task with --trace)
我迷失在這裏。我不知道爲什麼環境只在rake任務中可用,而不是rake任務中的Ruby腳本。
如果您需要您的應用程序通過'require File.expand_path('../ config/environment',__FILE __)'它是否有效? – Anthony
是的,安東尼,那是有效的。但是,我不想硬編碼它,當有一種方法可以工作,但不是。 – RuppalSingh