Rails - 在启动时执行rake任务

3

我在 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,但在运行迁移之前无法注释掉代码。

我该如何解决这个问题呢? 我需要将代码放在项目的其他位置吗?

1个回答

2

请从 config/application.rb 中移除你的代码,并将 Procfile 中的 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,请创建一个并将其添加到git。

现在,你的rake任务只会在启动服务器之前执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接