Ruby on rails Rails—在启动时执行rake任务
我在Ruby on rails Rails—在启动时执行rake任务,ruby-on-rails,heroku,rake,Ruby On Rails,Heroku,Rake,我在config/application.rb config.after_initialize do IndividualProject::Application.load_tasks #load File.join(Rails.root, 'lib', 'tasks', 'download_csv.rake') Rake::Task[ 'download_csv:get_files' ].invoke Rake::Task[ 'download
config/application.rb
config.after_initialize do
IndividualProject::Application.load_tasks
#load File.join(Rails.root, 'lib', 'tasks', 'download_csv.rake')
Rake::Task[ 'download_csv:get_files' ].invoke
Rake::Task[ 'download_csv:place_in_database' ].invoke
end
我的问题是,如果我尝试执行迁移,就会出现一个数据库错误,表明我在rake任务中引用的一个表不存在
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "currencies" does not exist
我可以通过注释代码然后运行迁移来解决这个问题。在此之后,服务器运行正常
但是,我想部署到Heroku,在那里我不能在运行迁移之前注释掉代码
我应该如何解决这个问题?
是否需要将代码放在项目中的其他位置?从
config/application.rb
中删除代码,并按如下方式更改web流程:
web: rake download_csv:get_files && rake download_csv:place_in_database && bundle exec rails server -p $PORT
将bundle exec rails server-p$PORT
更改为启动服务器所用的任何代码
如果您的项目中还没有Procfile,那么创建一个Procfile并将其添加到git中
现在,您的rake任务将仅在启动服务器之前执行