2014-01-22 37 views
1

我幾個小時都在爲這個錯誤而頭痛,並且還沒有找到修復。當我使用sudo -u root -H RAILS_ENV=production script/background_jobs start運行sidekiq我得到這個錯誤在sidekiq.log:Gitlab錯誤:Sidekiq; gemfile語法錯誤

Gemfile syntax error: 
/home/website/git/gitlab/Gemfile:20: syntax error, unexpected ':', expecting $end 
gem "mysql2", group: :mysql 

我已經安裝了Ruby 2.1.0和正在運行CentOS的。我看過其他帖子出現這個錯誤,他們的問題是他們運行的是Ruby 1.8,但是,我運行的是Ruby 2.1.0,並且也出現了這個錯誤。

任何幫助,非常感謝。

編輯:我的Gemfile http://pastebin.com/T5z4GZ3a

bundle回報

Your bundle is complete! 
Gems in the groups development, test, postgres, puma and aws were not installed. 
It was installed into ./vendor/bundle 

EDIT2:我background_jobs腳本http://pastebin.com/kdicTFqk

bundle show bundler回報

2.1.0 
/usr/local/rvm/gems/[email protected]/gems/bundler-1.5.2 

EDIT3:我認爲我已經找到了問題,但不知道如何解決它。我添加了p RUBY_VERSION作爲我的Gemfile的第一行,然後我改變了這樣寫的每一行:group: :mysql到這個:group => :mysql(因爲這是對舊版本的工作)。

然而,當我現在運行Sidekiq,這表明了在sidekiq.log:

"1.8.7" 
bundler: command not found: sidekiq 
Install missing gem executables with `bundle install` 

我真的,真的糊塗了。在這裏它清楚地表明我的Ruby版本是1.8.7,但這是不對的。 ruby -vrvm list rubies只顯示安裝了Ruby 2.1.0,並將其設置爲默認值。

+0

請發佈您的整個Gemfile。還要在你的Gemfile的開頭放一個'puts RUBY_VERSION'來驗證你使用的是正確的版本並做一個'bundle'。 – Agis

+0

@Agis更新後。如果我在開頭添加'puts RUBY_VERSION',當我運行'bundle exec rake gitlab:檢查RAILS_ENV = production'時,它會在開始時輸出版本號2.1.0。 – Martyn

+0

也顯示'bundle show bundler'的輸出,並嘗試用'gem「mysql2」,group =>替換該行:mysql' –

回答

1

確保,當你發出bundle install你拿起紅寶石2.1.0,只是做如下:

  1. 輸入到應用程序的文件夾,然後編輯的Gemfile幾個行,插入它p RUBY_VERSION

  2. 問題bundle install,看到ruby版本的輸出,它的外殼爲2.1.0,和gem "mysql2", group: :mysql的形式應該工作。

    2.1.0 
    
  3. 然後一個接一個,或一組逐組添加行,發出bundle install

  4. 所以請確保的Gemfile將在年底完全恢復。

  5. 然後,您應該在運行腳本中執行適當的安裝shell環境。

    #!/bin/bash -l 
    
  6. 到RVM加入採購:所以,如果你使用RVM只是代替在第一行

    source "$HOME/.rvm/scripts/rvm" 
    
  7. 啓動腳本之前,添加shell命令來設置的正確版本紅寶石2.1.0

    rvm use [email protected] 
    

注:也許你必須使用其他寶石不是global之一。

+0

做了第1步和第2步,並且在我執行「捆綁安裝」之後,它確實表示「2.1.0」。我應該在第3步做什麼? – Martyn

+0

更新了主帖,請閱讀。 – Martyn

+0

@Martijnie什麼說'bundle exec ruby​​ -v' –