我在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,在运行迁移之前我无法注释掉代码。
我该如何解决这个问题? 我是否需要将代码放在项目的其他位置?
答案 0 :(得分:2)
从config/application.rb
移除您的代码并更改Procfile中的网络流程,如下所示:
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,请创建一个并将其添加到git。
现在,您的rake任务将仅在启动服务器之前执行。