捆绑安装结果在“映射值在该上下文中不被允许”错误 [英] bundle install results in "mapping values are not allowed in this context" error

查看:136
本文介绍了捆绑安装结果在“映射值在该上下文中不被允许”错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一段已经工作了一段时间的rails 4项目。我尝试安装水龙头,但收到错误消息:

  $ gem安装水龙头

/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in`parse':(< unknown>) :在此上下文中不允许映射值位于/usr/local/rvm/rubies-2.2.1/lib/ruby/2.2.0/psych中第2行第29列(Psych :: SyntaxError)
处。 rb:370:在`parse_stream'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:318:in`parse'
从/usr/local/rvm/rubies-2.2.1/lib/ruby/2.2.0/psych.rb:245:in`load'
从/ usr / local / rvm / rubies / ruby​​- 2.2.1 / lib / ruby​​ / site_ruby / 2.2.0 / ruby​​gems / config_file.rb:333:在`load_file'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/ site_ruby / 2.2.0 / ruby​​gems / config_file.rb:198:在`initialize'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/ gem_runner.rb:74:在`new'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygem s / gem_runner.rb:74:在`do_configuration'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:39:在'run'中
从/usr/local/rvm/rubies/ruby-2.2.1/bin/gem:21:in'< main>'

在运行 gem list 软件包更新时,会得到相同的错误消息。我搜索类似的问题,看起来原因通常是格式不正确的YAML文件。我的 database.yml 文件和 Gemfile 最近没有更新,所以我不知道什么时候引入了这个错误。

我在Github上发现了一个导轨问题,并且有人建议使用 irb 来解析YAML文件以找出问题。我试着解析 database.yml Gemfile



config / database.yml

 #SQLite版本3.x 
#gem install sqlite3

#确保SQLite 3 gem在您的Gemfile中定义
#gem'sqlite3'

默认值:& default
适配器:sqlite3
pool:5
timeout:5000

开发:
<<<:* default
数据库:db / development.sqlite3

#警告:当您运行rake时,定义为test的数据库将被删除,
#从开发数据库重新生成。
#不要将此db设置为与开发或生产相同。
test:
<:lt::* default
database:db / test.sqlite3

产品:
<:lt::default * b $ b数据库:db / production.sqlite3





  $ irb -ryaml 
2.2.1:001> YAML.load_file'c​​onfig / database.yml'
=> {default=> {adapter=>sqlite3,pool=> 5,timeout=> 5000},development=> {adapter=> ,pool=> 5,timeout=> 5000,database=>db / development.sqlite3},test=> {adapter=>sqlite3 pool=> 5,timeout=> 5000,database=>db / test.sqlite3},production=> {adapter=>sqlite3 => 5,timeout=> 5000,database=>db / production.sqlite3}}

Gemfile

 来源'https://rubygems.org' 

gem'rails','4.2.2'
gem'faker','1.4.2'
gem'will_paginate','3.0.7'
gem'bootstrap-will_paginate','0.0.10'
gem'bootstrap-sass','3.2.0.0'
gem'sass-rails','5.0.2'
gem' uglifier','2.5.3'
gem'coffee-rails','4.1.0'
gem'jquery-rails', '4.0.3'
gem'turbolinks','2.3.0'
gem'jbuilder','2.2.3'
gem'devise','3.5.6'

group:development,:test do
gem'sqlite3','1.3.9'
gem'byebug','3.4.0'
gem'web-console' ,'2.0.0.beta3'
gem'spring','1.1.3'
end

group:test do
gem'minitest-reporter', '1.0.5'
gem'mini_backtrace','0.1.3'
gem'guard-minitest','2.3.1'
结束

组:生产do
gem'pg','0.17.1'
gem'rails_12factor','0.0.2'
end



  $ irb -ryaml 
2.2.1:001> YAML.load_file'Gemfile'
=> sourcehttps://rubygems.org'\\\
\\\
gem'rails','4.2.2'gem'faker','1.4.2'gem'will_paginate','3.0.7'gem'bootstrap- '5.0.2'宝石'uglifier','2.5.3'宝石'咖啡栏',' 4.1.0'gem'jquery-rails','4.0.3'gem'turbolinks','2.3.0'gem'jbuilder','2.2.3'gem'devise','3.5.6'\\\
group:开发,:测试做宝石'sqlite3','1.3.9'宝石'byebug','3.4.0'宝石'网络控制台','2.0.0.beta3'宝石'春','1.1.3'结束\group:test do gem'minitest-reporter','1.0.5'gem'mini_backtrace','0.1.3'gem'guard-minitest','2.3.1'end \ group:production do gem'pg , '0.17.1'gem'rails_12factor','0.0.2'end

这两个文件都能正确解析,所以我被卡住了。我不知道为什么命令保持失败,因为错误消息不能识别有问题的文件。

能够追踪此错误的来源。



ruby​​gems / config_file.rb:

  SYSTEM_WIDE_CONFIG_FILE = File.join SYSTEM_CONFIG_PATH,'gemrc'
...
system_config = load_file SYSTEM_WIDE_CONFIG_FILE

我试着解析我的.gemrc文件,结果失败:

  $ irb -ryaml 
2.2.1:001> YAML.load_file'/home/ubuntu/.gemrc'
Psych :: SyntaxError:(/home/ubuntu/.gemrc):映射值不允许在第2行第29列的
从/ usr / local / rvm / rubies / ruby​​-2.2.1 / lib / ruby​​ / 2.2.0 / psych.rb:370:从/usr/local/rvm/rubies-2.2解析
。 1 / lib / ruby​​ / 2.2.0 / psych.rb:370:来自/usr/local/rvm/rubies-2.2.1/lib/ruby/2.2.0/psych的`parse_stream'
。 rb:318:在`parse'$ / $ b $ / from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:245:in`load'
from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:464:in`block in load_file'
from / usr / local / rvm / rubies / ruby-2.2.1 / lib / ruby​​ / 2.2.0 / psych.rb:464:在`open'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2。 0 / psych.rb:464:在'load_file'中
来自(irb):1
来自/usr/local/rvm/rubies/ruby-2.2.1/bin/irb:11:in` < main>'

不知何故,两条线加入我的〜/ .gemrc:

  install:--no-rdoc --no-ri 
update:--no-rdoc --no-rigem:--no-rdoc --no-ri

将它们分开解决问题:

  install:--no-rdoc --no-ri 
update:--no-rdoc --no-ri
gem:--no-rdoc --no-ri

由于我的.gemrc文件不在我的项目的版本控制之下,无论我检出哪个历史提交,我都会看到错误。


I have a rails 4 project that has been working for some time. I attempted to install taps but got an error message:

$ gem install taps

/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse': (<unknown>): mapping values are not allowed in this context at line 2 column 29 (Psych::SyntaxError)
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse_stream'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:318:in `parse'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:245:in `load'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/config_file.rb:333:in `load_file'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/config_file.rb:198:in `initialize'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:74:in `new'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:74:in `do_configuration'
    from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:39:in `run'
    from /usr/local/rvm/rubies/ruby-2.2.1/bin/gem:21:in `<main>'

I get the same error message when trying to run gem list or bundle update. I searched for similar problems, and it seems the cause is typically an improperly formatted YAML file. My database.yml file and Gemfile were not recently updated, so I don't know when this bug was introduced.

I found a rails issue on Github that describes this error, and someone recommended parsing YAML files with irb to isolate the issue. I tried parsing database.yml and Gemfile:

config/database.yml

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

$ irb -ryaml
2.2.1 :001 > YAML.load_file 'config/database.yml'
 => {"default"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000}, "development"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/development.sqlite3"}, "test"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/test.sqlite3"}, "production"=>{"adapter"=>"sqlite3", "pool"=>5, "timeout"=>5000, "database"=>"db/production.sqlite3"}} 

Gemfile

source 'https://rubygems.org'

gem 'rails',                   '4.2.2'
gem 'faker',                   '1.4.2'
gem 'will_paginate',           '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap-sass',          '3.2.0.0'
gem 'sass-rails',              '5.0.2'
gem 'uglifier',                '2.5.3'
gem 'coffee-rails',            '4.1.0'
gem 'jquery-rails',            '4.0.3'
gem 'turbolinks',              '2.3.0'
gem 'jbuilder',                '2.2.3'
gem 'devise',                  '3.5.6'

group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',             '0.17.1'
  gem 'rails_12factor', '0.0.2'
end

$ irb -ryaml
2.2.1 :001 > YAML.load_file 'Gemfile'
 => "source 'https://rubygems.org'\n\ngem 'rails',                   '4.2.2' gem 'faker',                   '1.4.2' gem 'will_paginate',           '3.0.7' gem 'bootstrap-will_paginate', '0.0.10' gem 'bootstrap-sass',          '3.2.0.0' gem 'sass-rails',              '5.0.2' gem 'uglifier',                '2.5.3' gem 'coffee-rails',            '4.1.0' gem 'jquery-rails',            '4.0.3' gem 'turbolinks',              '2.3.0' gem 'jbuilder',                '2.2.3' gem 'devise',                  '3.5.6'\ngroup :development, :test do gem 'sqlite3',     '1.3.9' gem 'byebug',      '3.4.0' gem 'web-console', '2.0.0.beta3' gem 'spring',      '1.1.3' end\ngroup :test do gem 'minitest-reporters', '1.0.5' gem 'mini_backtrace',     '0.1.3' gem 'guard-minitest',     '2.3.1' end\ngroup :production do gem 'pg',             '0.17.1' gem 'rails_12factor', '0.0.2' end" 

Both files parse correctly, so I am stuck. I don't know why the commands keep failing since the error message doesn't identify the offending file.

解决方案

I was finally able to track down the source of this error.

rubygems/config_file.rb:

SYSTEM_WIDE_CONFIG_FILE = File.join SYSTEM_CONFIG_PATH, 'gemrc'
...
system_config = load_file SYSTEM_WIDE_CONFIG_FILE

I tried parsing my .gemrc file and it failed:

$ irb -ryaml
2.2.1 :001 > YAML.load_file '/home/ubuntu/.gemrc'
Psych::SyntaxError: (/home/ubuntu/.gemrc): mapping values are not allowed in this context at line 2 column 29
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:370:in `parse_stream'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:318:in `parse'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:245:in `load'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:464:in `block in load_file'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:464:in `open'
        from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/psych.rb:464:in `load_file'
        from (irb):1
        from /usr/local/rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'

Somehow, two lines became joined in my ~/.gemrc:

install: --no-rdoc --no-ri
update: --no-rdoc --no-rigem: --no-rdoc --no-ri

Separating them back out resolved the problem:

install: --no-rdoc --no-ri
update: --no-rdoc --no-ri
gem: --no-rdoc --no-ri

Since my .gemrc file is not under my project's revision control, I was seeing the error no matter which historical commit I checked out.

这篇关于捆绑安装结果在“映射值在该上下文中不被允许”错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆