【问题标题】:running rake task on 'production' and specifying environment?在“生产”上运行 rake 任务并指定环境?
【发布时间】:2012-02-04 01:20:03
【问题描述】:

我在 Linode 有一个主机,我试图在它上面运行一个 Rake 任务,但是我收到一个 mySQL 错误,说它无法连接。看起来它认为它在开发中。我做了一些谷歌搜索,发现我可以做这样的事情:

bundle exec rails c

它加载了开发环境,我无法运行User.all,给我一个拒绝访问错误。

如果我运行 bundle exec rails c RAILS_ENV=production 我会收到错误:

Rails.env=production database is not configured (ActiveRecord::AdapterNotSpecified)

但是,如果我通过网络访问它,一切正常。我之前能够运行rake db:seed,所以我知道有办法解决这个问题。

使用生产凭据访问 mySQL 可以正常工作。

有什么想法吗?

【问题讨论】:

  • RAILS_ENV 用于 rake,使用 rails 控制台只需将环境作为第一个参数 rails console production 传递 - 此外,在调用 rails 时您不需要使用 bundle exec - 将它用于其他所有内容(即耙)
  • 类似于 xnm 和 house9 的回答:试试RAILS_ENV=production rake my_task_name。它不会永久改变你的环境,只是为了任务,所以不用担心。
  • 请更改标题,因为这与 rake 无关

标签: ruby-on-rails rake


【解决方案1】:

试试这个:

rails c production

或者,在开头:

RAILS_ENV=production rails c

当您将 RAILS_ENV=production 放在末尾时,它认为您将其作为参数传递。

【讨论】:

    【解决方案2】:

    如果您想在 Gemfile 中当前包的上下文中运行控制台并确保您使用的是 Gemset,请使用:

    bundle exec rails c production 
    

    【讨论】:

      【解决方案3】:

      这对我有用。这取决于您的服务器及其所有依赖项的设置方式:

      RAILS_ENV=production bundle exec rails console

      【讨论】:

        猜你喜欢
        • 2017-12-20
        • 2012-12-26
        • 2016-11-13
        • 1970-01-01
        • 2022-01-23
        • 2015-03-10
        • 2016-02-13
        • 2015-10-29
        • 1970-01-01
        相关资源
        最近更新 更多