13

我正在尝试将我的应用程序部署到 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 设置为包含

组:生产做 gem 'therubyracer-heroku','0.8.1.pre3' gem 'pg' end

我做了一个快速的 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”生成的默认值

4

3 回答 3

11

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

heroku stack:migrate bamboo-mri-1.9.2 

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

于 2011-06-04T05:02:46.667 回答
4

问题是在 Ruby 1.9.2 中有一个新样式的 hash 参数可用,但在 Ruby 1.8.7 中不可用,它是:

key: value  # only available in 1.9.2 but

:key => value # available in 1.8.7 and 1.9.2
于 2011-12-20T07:44:02.547 回答
2

这只是指向一些的附加指针。如果您在开发环境中遇到同样的错误,请在刚才运行良好的应用程序上检查您的 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
于 2012-01-26T17:11:22.823 回答