rails new <app>或rails -h craps out with无法加载这样的文件 - io/console

gve*_*mag 20 ruby-on-rails

[ec2-user@ip-XX-XXX-XXX-XXX rails]$ rails -h
/usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError)
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/thor-0.19.1/lib/thor/shell/basic.rb:2:in `<top (required)>'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/thor-0.19.1/lib/thor/shell/color.rb:1:in `<top (required)>'
    from /usr/local/share/ruby/gems/2.0/gems/thor-0.19.1/lib/thor/shell.rb:17:in `shell'
    from /usr/local/share/ruby/gems/2.0/gems/thor-0.19.1/lib/thor/base.rb:439:in `start'
    from /usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/lib/rails/commands/application.rb:17:in `<top (required)>'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/lib/rails/cli.rb:14:in `<top (required)>'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/bin/rails:9:in `<top (required)>'
    from /usr/local/bin/rails:23:in `load'
    from /usr/local/bin/rails:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我使用$ gem install rails安装了Ruby on Rails,它也完成了.我用$ echo $检查过程状态?它意味着成功.

有趣的是,这两个命令工作正常:

$ which rails
/usr/local/bin/rails

$ rails -v
Rails 4.1.0
Run Code Online (Sandbox Code Playgroud)

这是64位的Amazon Web Services AMI映像.请帮我解决这个问题.

我安装了捆绑器:

$ gem install bundler
Fetching: bundler-1.6.2.gem (100%)
Successfully installed bundler-1.6.2
Parsing documentation for bundler-1.6.2
Installing ri documentation for bundler-1.6.2
Done installing documentation for bundler after 5 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

我检查了重复的安装:

$ find / 2>/dev/null| grep bin/ruby
/usr/bin/ruby
/usr/bin/ruby2.0

$ find / 2>/dev/null| grep bin/rails
/usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/bin/rails
/usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/lib/rails/generators/rails/plugin/templates/bin/rails.tt
/usr/local/share/ruby/gems/2.0/gems/railties-4.1.0/lib/rails/generators/rails/app/templates/bin/rails
/usr/local/share/ruby/gems/2.0/gems/rails-4.1.0/guides/code/getting_started/bin/rails
/usr/local/bin/rails
/home/ec2-user/.gem/ruby/2.0/gems/rails-4.1.0/guides/code/getting_started/bin/rails
Run Code Online (Sandbox Code Playgroud)

Kir*_*rat 23

你需要安装io-console gem.使用以下命令安装它:

gem install io-console
Run Code Online (Sandbox Code Playgroud)

这次运行之后 rails -h

此外,运行echo $PATH并确保您/usr/local/bin在路径中.如果没有,那么你需要添加它.

  • 我是一个完整的rails newb,我遇到了与OP相同的问题.当我尝试安装io-console gem时,我得到:`获取:io-console-0.4.2.gem(100%)构建本机扩展.这可能需要一段时间...错误:安装io-console时出错:错误:无法构建gem原生扩展./usr/bin/ruby2.0 extconf.rb mkmf.rb在/usr/share/ruby/include/ruby.h找不到ruby的头文件.gem文件将保留在/home/ec2-user/.gem中/ruby/2.0/gems/io-console-0.4.2进行检查.结果记录到/home/ec2-user/.gem/ruby/2.0/gems/io-console-0.4.2 /./ gem_make.out` wth? (2认同)
  • 查看这些SO答案:[gem install:无法构建gem原生扩展(无法找到头文件)](http://stackoverflow.com/questions/4304438/gem-install-failed-to-build-gem-native -extension-cant-find-header-files)和[安装json gem'mkmf.rb时出错无法找到ruby的头文件'](http://stackoverflow.com/questions/20559255/error-while-installing -json-gem-mkmf-rb-cant-find-header-files-for-ruby)因为你的问题似乎与这些有关. (2认同)

gve*_*mag 9

所以我在同一天晚上解决了这个问题,但不知何故,Stackoverflow没有向我发送有关问题回复的任何通知,所以我不知道这些回复.这就是我最终做的事情.它基本上是删除了rails安装上的ruby并从头开始安装它.这是在Amazon Web服务器上 - linux风格.

sudo yum update

$wget  https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

$ bash -s stable < rvm-installer

$ source /home/ec2-user/.rvm/scripts/rvm

$ rvm requirements

$ sudo yum erase ruby

$ rvm install ruby

$ rvm use ruby --default

$ rvm rubygems current

$ gem install rails   # this takes forever
Run Code Online (Sandbox Code Playgroud)

之后它工作得很好.


SR.*_*SR. 7

我在AWS Elastic Beanstalk上遇到了完全相同的问题(Puma,Ruby 2,Rails 4.0):

> rails generate simple_form:install --bootstrap

/usr/local/share/ruby/gems/2.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require': cannot load such file -- io/console (LoadError)
Run Code Online (Sandbox Code Playgroud)

我简单地说:

gem 'io-console'
Run Code Online (Sandbox Code Playgroud)

在我的Gemfile顶部,再次在盒子上运行bundle install,取得了巨大的成功.希望比为其他任何运行此功能的人重新安装rails更快.