【问题标题】:Rails 3.1 Deployment to Heroku ErrorRails 3.1 部署到 Heroku 错误
【发布时间】:2011-09-07 12:54:00
【问题描述】:

我正在尝试将我的应用程序部署到 Heroku,我之前在我的 Windows 机器上做过,现在我正在使用 mac。

我是第一次尝试使用 Postgresql。

我的 Gemfile 中有以下内容:

gem 'pg'

编辑:

AndrewDavis-OSX:lunchbox ardavis$ rvm list

rvm rubies

=> ruby-1.9.2-p180 [ x86_64 ]

AndrewDavis-OSX:lunchbox ardavis$ heroku rake db:migrate
rake aborted!
/app/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end
App::Application.config.session_store :cookie_store, key: '_app_session'
                                                        ^

(See full trace by running task with --trace)
(in /app)

如您所见,我正在运行 ruby​​ 1.9.2。我的heroku迁移出现错误。

编辑 2:

刚刚使用 Rails 3.1.rc1 创建了一个全新的 Rails 应用程序。我将 gemfile 设置为包含

组:生产做 宝石'therubyracer-heroku','0.8.1.pre3' 宝石'pg' 结束

我做了一个快速的 git init,提交,然后是 'heroku create' 和 'git push heroku master'。这些都工作得很好。但是问题是当我尝试“heroku rake db:migrate”时。我收到与您在上面看到的相同的错误。

临时修复编辑:

所以...如果我将 config/initializers/session_store.rb 更改为

App::Application.config.session_store :cookie_store, key: '_app_session'

App::Application.config.session_store :cookie_store, :key => '_app_session'

并从

更改我的 config/initializers/wrap_parameters.rb
ActionController::Base.wrap_parameters format: [:json]

ActionController::Base.wrap_parameters :format => [:json]

然后我就可以执行“heroku rake db:migrate”了。有人愿意解释为什么这在本地以原始方式起作用,而不对冒号/哈希进行任何修改吗?原来的方式是通过'rails new myApp'生成的默认值

【问题讨论】:

  • 是的,Heroku 默认堆栈是 1.8.7。这可能会在 Rails 3.1 发布后发生变化,因为 1.8.7 在 3.1 中被视为旧版。
  • 我当然希望如此。我现在正在使用 3.1.rc1。

标签: ruby-on-rails deployment heroku initializer ruby-on-rails-3.1


【解决方案1】:

Heroku 堆栈需要迁移,您可以运行以下命令:

heroku stack:migrate bamboo-mri-1.9.2 

我在本地运行 1.9.2,这就是它在本地运行的原因。但在 Heroku 上,它运行的是 1.8.7。

【讨论】:

    【解决方案2】:

    问题在于 Ruby 1.9.2 中提供了一个新样式的哈希参数,但在 Ruby 1.8.7 中不可用,即:

    key: value  # only available in 1.9.2 but
    
    :key => value # available in 1.8.7 and 1.9.2
    

    【讨论】:

      【解决方案3】:

      这只是一个额外的指针。如果您在开发环境中遇到同样的错误,请在刚才运行良好的应用程序上检查您的 ruby​​ 版本,如上面提到的 Preksha/Alex Kliuchnikau。

      $ ruby -v
      

      如果 ruby​​ 未设置为 1.9.2 或更高版本,您可以使用 rvm 进行设置

         $ rvm --default 1.9.2   (1.9.3 is what I currently use)
      

      如果它没有响应 rvm 命令,请将 rvm 添加到您的 bashrc 文件中,方法是在终端中复制以下行:

      echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" ' >> ~/.bash_profile
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-03
        • 2018-05-08
        • 1970-01-01
        • 2012-01-05
        • 2013-05-25
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        相关资源
        最近更新 更多