Gitlab PUSH语法错误,意外’:’,期待$ end

我安装了Gitlab 5,一切顺利,直到我试图进行测试PUSH。 错误是:

remote: /usr/local/rvm/gems/ruby-2.0.0-p0/gems/bundler-1.3.5/lib/bundler/dsl.rb:33:in `eval_gemfile': Gemfile syntax error: (Bundler::GemfileError) remote: /home/git/gitlab/Gemfile:14: syntax error, unexpected ':', expecting $end remote: gem "mysql2", group: :mysql remote: ^ 

我搜索了整个互联网(好吧,有点),但大多数答案是关于使用较低版本的ruby(1.8.7)。 这里不是这种情况,正如你所看到的,我正在使用2.0.0-p0。

我也附加了Gemfile,这是来自Gitlab的源代码,所以我认为它没有任何问题。 以防万一:

 source "https://rubygems.org" def darwin_only(require_as) RUBY_PLATFORM.include?('darwin') && require_as end def linux_only(require_as) RUBY_PLATFORM.include?('linux') && require_as end gem "rails", "3.2.13" # Supported DBs gem "mysql2", group: :mysql gem "pg", group: :postgres # Auth gem "devise" gem 'omniauth', "~> 1.1.3" gem 'omniauth-google-oauth2' gem 'omniauth-twitter' gem 'omniauth-github' # Extracting information from a git repository # Since gollum requires grit we cannot use gitlab-grit gem name any more. Use grit instead gem "grit", '~> 2.5.0', git: 'https://github.com/gitlabhq/grit.git', ref: '42297cdcee16284d2e4eff23d41377f52fc28b9d' gem 'grit_ext', '~> 0.8.1' # Ruby/Rack Git Smart-HTTP Server Handler gem 'gitlab-grack', '~> 1.0.0', require: 'grack' # LDAP Auth gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap" # Syntax highlighter gem "gitlab-pygments.rb", '~> 0.3.2', require: 'pygments.rb' # Language detection gem "github-linguist", "~> 2.3.4" , require: "linguist" # API gem "grape", "~> 0.3.1" gem "grape-entity", "~> 0.2.0" # Format dates and times # based on human-friendly examples gem "stamp" # Enumeration fields gem 'enumerize' # Pagination gem "kaminari", "~> 0.14.1" # HAML gem "haml-rails" # Files attachments gem "carrierwave" # Authorization gem "six" # Seed data gem "seed-fu" # Markdown to HTML gem "redcarpet", "~> 2.2.2" gem "github-markup", "~> 0.7.4", require: 'github/markup' # Servers gem "puma", '~> 2.0.0.b7' # State machine gem "state_machine" # Issue tags gem "acts-as-taggable-on", "2.3.3" # Background jobs gem 'slim' gem 'sinatra', require: nil gem 'sidekiq' # HTTP requests gem "httparty" # Colored output to console gem "colored" # GitLab settings gem 'settingslogic' # Git Wiki gem "gollum-lib", "~> 1.0.0" # Misc gem "foreman" # Cache gem "redis-rails" group :assets do gem "sass-rails", "~> 3.2.5" gem "coffee-rails", "~> 3.2.2" gem "uglifier", "~> 1.3.0" gem "therubyracer" gem 'chosen-rails', "0.9.8" gem 'select2-rails' gem 'jquery-atwho-rails', "0.1.7" gem "jquery-rails", "2.1.3" gem "jquery-ui-rails", "2.0.2" gem "modernizr", "2.6.2" gem "raphael-rails", git: "https://github.com/gitlabhq/raphael-rails.git" gem 'bootstrap-sass', "2.2.1.1" gem "font-awesome-sass-rails", "~> 3.0.0" gem "gemoji", "~> 1.2.1", require: 'emoji/railtie' gem "gon" end group :development do gem "annotate", git: "https://github.com/ctran/annotate_models.git" gem "letter_opener" gem 'quiet_assets', '~> 1.0.1' gem 'rack-mini-profiler' # Better errors handler gem 'better_errors' gem 'binding_of_caller' gem 'rails_best_practices' # Docs generator gem "sdoc" # thin instead webrick gem 'thin' end group :development, :test do gem 'coveralls', require: false gem 'rails-dev-tweaks' gem 'spinach-rails' gem "rspec-rails" gem "capybara" gem "pry" gem "awesome_print" gem "database_cleaner" gem "launchy" gem 'factory_girl_rails' # Generate Fake data gem "ffaker" # Guard gem 'guard-rspec' gem 'guard-spinach' # Notification gem 'rb-fsevent', require: darwin_only('rb-fsevent') gem 'growl', require: darwin_only('growl') gem 'rb-inotify', require: linux_only('rb-inotify') # PhantomJS driver for Capybara gem 'poltergeist', git: 'https://github.com/jonleighton/poltergeist.git', ref: '9645b52009e258921b860d3b7601d00008b22c45' gem 'spork', '~> 1.0rc' end group :test do gem "simplecov", require: false gem "shoulda-matchers", "1.3.0" gem 'email_spec' gem "webmock" gem 'test_after_commit' end group :production do gem "gitlab_meta", '5.0' end 

有人可以帮忙吗? 提前致谢。

解决了这个问题。 不知怎的,Gitlabgem(捆绑?)仍然使用系统ruby(1.8.7)。 我不得不yum removeyum remove ,现在一切正常。

正如问题3080和GitLab要求部分所述 :

ruby1.9.3

我会先尝试切换到ruby1.9.3(当然不是1.8.x)。

在完全相同的问题上花费了大约3个小时之后,解决方案如下:An Phan

做$ rpm -qa | grep -i ruby

它会给你像ruby.1.8 .. *

DO yum erase ruby​​.1.8 .. *

你可以尝试:

 group :mysql do gem "mysql2" end group :postgres do gem "pg" end 

试试这个:

完全删除文件夹vendor/bundle并在使用带有rvm的1.9.3时重新运行部署命令。

当我试图为我合并时,我遇到了gitlab的问题。 当git运行一个钩子时,它会修改环境路径。 在我的机器上,它将/ usr / libexec / git-core和/ usr / bin添加到路径的开头。

所以#!/usr/bin/env ruby的gitlab-shell更新钩子shebang运行,它总是在/ usr / bin中拾取系统ruby,而不是查看rvm路径(类似于/home/git/.rvm) /gems/ruby-2.0.0-p353/bin)。

删除系统ruby或修改shebang直接运行rvm ruby​​应该可行。