我几个小时以来一直在忽视这个错误,但仍然没有找到解决办法。当我使用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 -v
或rvm list rubies
仅显示已安装Ruby 2.1.0,并设置为默认值。
答案 0 :(得分:1)
请确保,当您发出bundle install
时,您已选择了 ruby 2.1.0 ,请执行以下操作:
进入app的文件夹,然后将 Gemfile 编辑成几行,插入其中p RUBY_VERSION
问题bundle install
,看到ruby版本输出,shell为2.1.0,gem "mysql2", group: :mysql
的形式应该有用。
2.1.0
然后逐行或逐组添加行,发出bundle install
因此,请确保 Gemfile 最终会完全恢复。
然后,您应该在运行脚本中执行正确的安装shell环境。因此,如果您使用 rvm ,只需将第一行替换为:
#!/bin/bash -l
将来源添加到rvm:
source "$HOME/.rvm/scripts/rvm"
在启动脚本之前,添加shell命令以将 ruby 的正确版本设置为 2.1.0
rvm use ruby-2.1.0@global
注意:可能您必须使用其他 gemset ,而不是 global
。