【问题标题】:rails new <app> or rails -h craps out with cannot load such file -- io/consolerails new <app> 或 rails -h 无法加载此类文件 -- io/console
【发布时间】:2014-06-04 18:36:25
【问题描述】:
[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>'

我确实使用 $ gem install rails 安装了 Ruby on Rails,它也很好地完成了。我用 $echo $? 检查了进程状态0 表示成功。

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

$ which rails
/usr/local/bin/rails

$ rails -v
Rails 4.1.0

这是一个 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

我检查了重复安装:

$ 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

【问题讨论】:

  • gem envgem list --local 怎么说?
  • 当我点击这个时,我需要退出我的 ssh 会话并重试——安装 rvm 和 rails 的一些事情让我处于糟糕的状态。

标签: ruby-on-rails


【解决方案1】:

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

gem install io-console

运行后rails -h

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

【讨论】:

  • 我是一个完整的 Rails 新手,我遇到了与 OP 相同的问题。当我尝试安装 io-console gem 时,我得到:Fetching: io-console-0.4.2.gem (100%) Building native extensions. This could take a while... ERROR: Error installing io-console: ERROR: Failed to build gem native extension. /usr/bin/ruby2.0 extconf.rb mkmf.rb can't find header files for ruby at /usr/share/ruby/include/ruby.h Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/io-console-0.4.2 for inspection. Results logged to /home/ec2-user/.gem/ruby/2.0/gems/io-console-0.4.2/./gem_make.out wth?
  • 谢谢!它实际上是我非常糟糕的目录权限。我杀死了我搞砸的实例并启动了一个新实例,这次这个解决方案对我有用。
  • @DaveMunger 太好了!很高兴我的回答在某种程度上有所帮助。
  • 我想为所有使用 AWS 并面临此问题的人添加,这可以正确解决它,而不是接受的答案。
【解决方案2】:

所以我在同一天晚上解决了这个问题,但不知何故 Stackoverflow 没有向我发送任何关于问题回复的通知,所以我不知道这些回复。这就是我最终做的。它本质上是移除 ruby​​ on rails 安装并从头开始安装。这是在 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

之后就正常了。

【讨论】:

    【解决方案3】:

    我在 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)
    

    我只是补充了一句:

    gem 'io-console'
    

    到我的 Gemfile 顶部并在盒子上再次运行 bundle install 以获得巨大成功。希望比为遇到此问题的其他人重新安装导轨更快。

    【讨论】:

    • 我在亚马逊 ec2 微实例上遇到了与 rails new myapp 类似的问题,并解决了 gem install io-console 问题
    • 今天在新鲜的 EC2 图像上仍然与我相关。 gem install io-console 已修复,无需导轨。
    【解决方案4】:

    谢谢;你确实需要 io-console。要使其工作,请安装 GCC。稍后需要休息,所以:

    yum -y install gcc mysql-devel ImageMagick-devel
    

    那么,

    gem install io-console
    

    工作,我可以继续安装。

    【讨论】:

    • 我必须安装 ruby​​ 开发头文件:$ sudo yum install ruby-devel
    猜你喜欢
    • 2022-08-13
    • 2017-04-05
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2021-04-08
    • 2016-04-10
    相关资源
    最近更新 更多