Gitlab出错:Sidekiq; gemfile语法错误

时间:2014-01-22 13:21:58

标签: ruby-on-rails ruby git rvm gitlab

我几个小时以来一直在忽视这个错误,但仍然没有找到解决办法。当我使用sudo -u root -H RAILS_ENV=production script/background_jobs start运行sidekiq时,我在sidekiq.log中收到此错误:

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并且也遇到了这个错误。

非常感谢任何帮助。

编辑:我的宝石文件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/ruby-2.1.0@global/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,并设置为默认值。

1 个答案:

答案 0 :(得分:1)

请确保,当您发出bundle install时,您已选择了 ruby​​ 2.1.0 ,请执行以下操作:

  1. 进入app的文件夹,然后将 Gemfile 编辑成几行,插入其中p RUBY_VERSION

  2. 问题bundle install,看到ruby版本输出,shell为2.1.0,gem "mysql2", group: :mysql的形式应该有用。

    2.1.0
    
  3. 然后逐行或逐组添加行,发出bundle install

  4. 因此,请确保 Gemfile 最终会完全恢复。

  5. 然后,您应该在运行脚本中执行正确的安装shell环境。因此,如果您使用 rvm ,只需将第一行替换为:

    #!/bin/bash -l
    
  6. 将来源添加到rvm:

    source "$HOME/.rvm/scripts/rvm"
    
  7. 在启动脚本之前,添加shell命令以将 ruby​​ 的正确版本设置为 2.1.0

    rvm use ruby-2.1.0@global
    
  8. 注意:可能您必须使用其他 gemset ,而不是 global