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を設定しました

グループ : production do 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 では利用可能であるが、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

これは、いくつかへの単なる追加のポインタです。開発環境で同じエラーが発生した場合は、先ほど正常に機能していたアプリで、上記の Preksha/Alex Kliuchnikau のように Ruby のバージョンを確認してください。

$ ruby -v

ruby が 1.9.2 以上に設定されていない場合は、rvm でそれを行うことができます

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

rvm コマンドに応答しない場合は、ターミナルで次の行をコピーして、rbm を bashrc ファイルに追加します。

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" ' >> ~/.bash_profile
于 2012-01-26T17:11:22.823 に答える