2011-06-03 127 views
13

我想部署我的應用程序到Heroku,我已經在我的Windows機器上完成了此操作,現在我正在使用一個mac。Rails 3.1部署到Heroku錯誤

我想第一次使用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) 

正如你所看到的,我運行紅寶石1.9.2。而且我的heroku遷移有錯誤。

編輯2:

剛剛創建使用Rails 3.1.rc1一個全新的Rails應用程序。我設置的Gemfile包括

組:生產做 寶石 'therubyracer-Heroku的', '0.8.1.pre3' 寶石 'PG' 結束

我做了一個快速的git的init,COMMITED,然後'heroku創建'和'git push heroku master'。這些都工作得很好。然而問題是當我嘗試'heroku rake db:migrate'時。我得到了你在上面看到的同樣的錯誤。

TEMP FIX編輯:

所以...如果我我的配置/初始化/ session_store.rb從

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

改變

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

,改變我的配置/初始化/ wrap_parameters.rb from

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

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

然後我就可以做'heroku rake db:migrate'就好了。任何人都在意解釋爲什麼這種方式在本地工作原來的方式,沒有任何修改的冒號/哈希?最初的辦法是做生成的默認「軌新對myApp」

+0

呀,Heroku的默認堆棧是1.8.7。當Rails 3.1發佈時,這可能會發生變化,因爲1.8.7在3.1中被認爲是遺留的。 – 2011-06-04 05:10:59

+0

我當然希望如此。我現在正在使用3.1.rc1。 – ardavis 2011-06-04 15:01:19

回答

11

Heroku的堆棧需要遷移,您可以運行此命令這樣做:

heroku stack:migrate bamboo-mri-1.9.2 

我跑1.9.2本地,這就是它在當地工作的原因。但在Heroku上,它運行的是1.8.7。

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 
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