我最近在fedora 12中安装了rails。我也是linux新手。在Windows 7上一切正常。但是我在linux中面临很多问题。求救!
我已经安装了所有必需品,以使基本脚本/服务器启动并运行。我在尝试脚本/服务器时弹出boot.rb时出现此错误。我想在此提供一些细节:
安装了rails,ruby和gem的目录,
[vineeth@localhost my_app]$ which ruby
/usr/local/bin/ruby
[vineeth@localhost my_app]$ which rails
/usr/bin/rails
[vineeth@localhost my_app]$ which gem
/usr/bin/gem
当我运行脚本/服务器时,这就是错误。
[vineeth@localhost my_app]$ script/server
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError)
from ./script/../config/boot.rb:9
from script/server:2:in `require'
from script/server:2
PATH文件看起来像这样
[vineeth@localhost my_app]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/ruby:$PATH"
我想这与PATH文件有关。让我知道我需要在这里改变什么。如果我还有其他变化,请告诉我。
答案 0 :(得分:102)
我有预感你有两个红宝石版本。请粘贴以下命令的输出:
$ which -a ruby
对评论进行了更新:
核弹一个版本,只留一个版本。我有两个版本查看宝石的不同位置有同样的问题。让我疯了几个星期。在这里拿到赏金给我同样的答案我给你。
我所做的只是核实一次安装红宝石,并通过端口留下一个可管理的。我建议这样做:
/usr
而非/usr/local
)的端口安装ruby版本rubygems
答案 1 :(得分:25)
由于安装了多个ruby副本,我在Ubuntu上遇到了类似的问题。 (1.8和1.9.1)不幸的是我需要他们两个。解决方案是使用:
$ sudo update-alternatives --config ruby
There are 2 choices for the alternative ruby (providing /usr/bin/ruby).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/ruby1.8 50 auto mode
1 /usr/bin/ruby1.8 50 manual mode
2 /usr/bin/ruby1.9.1 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode.
完成捆绑后,安装成功。
答案 2 :(得分:18)
好吧,我是一个Ruby noob,但我确实得到的解决方法与这里的答案略有不同,所以希望这有助于其他人(tl; dr:我使用RVM将系统Ruby版本切换到预期的相同版本) RubyGems的)。
首先,列出Eimantas所提到的所有红宝石是一个很好的起点:
> which -a ruby
/opt/local/bin/ruby
/Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
/Users/Brian/.rvm/bin/ruby
/usr/bin/ruby
/opt/local/bin/ruby
系统使用的默认Ruby实例似乎是1.8.7:
> ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]
而Rubygems使用的版本是由RVM管理的1.9.2版本:
> gem env | grep 'RUBY EXECUTABLE'
- RUBY EXECUTABLE: /Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
所以这绝对是个问题。我自己并不主动使用Ruby(这只是我试图运行的构建系统脚本的依赖项)所以我不关心哪个版本是活动的用于其他目的。由于rubygems期望已经由RVM管理的1.9.2,我只是使用RVM来切换系统以使用1.9.2版本作为默认值:
> rvm use 1.9.2
Using /Users/Brian/.rvm/gems/ruby-1.9.2-p290
> ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]
执行此操作后,我的“无此文件”问题消失了,我的脚本开始工作。
答案 3 :(得分:13)
我想补充一点,在我的情况下rubygems
没有安装。
正在运行sudo apt-get install rubygems
解决了这个问题!
答案 4 :(得分:12)
尝试使用以下方式启动项目:
./script/server
如果您使用ruby 1.9.2(来自strange inability to require config/boot after upgrading to ruby 1.9.2),请使用而不是script/server
答案 5 :(得分:11)
如果其他人正在搜索这个问题:我能够通过找到我想要使用的难以捉摸的“rubygems”文件夹并将其添加到我的$ RUBYLIB环境变量来修复我的问题。
find / -name "rubygems" -print
找到后,将父目录添加到您的环境中。在bash中,像这样:
export RUBYLIB=/path/to/parent
现在,如果你运行gem,它应该选择正确的库目录,然后你就可以运行了。
答案 6 :(得分:6)
我有一个类似的问题,只是运行一个简单的ruby脚本,只需要我想要的宝石......得到了错误信息。当我改变咒语:
ruby test.rb
到
ruby -rubygems test.rb
似乎工作。
答案 7 :(得分:6)
我遇到了类似的问题,并通过设置RUBYLIB env。
解决了这个问题在我的环境中,我使用了这个:
export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB
答案 8 :(得分:1)
如果你安装了几个ruby,只需删除其中一个就足够了,在MacosX上安装额外的端口,删除ports ruby安装:
sudo port -f uninstall ruby
答案 9 :(得分:1)
我也遇到过这个问题。 我的解决方案是删除文件Gemfile.lock,然后再次安装gems:bundle install
答案 10 :(得分:1)
gem install bundler
为我解决了这个问题。
答案 11 :(得分:1)
这是谷歌自动修正“ubygems”到“rubygems”后谷歌搜索Peekable
的第一个答案。事实证明这是Ruby 2.4和2.5之间的有意改变(Bug #14322)。检测用户gems目录而不考虑ruby版本的脚本很可能会失败。
Ruby 2.4
export default class A extends Component {
constructor(props) {
super(props)
this.state = {
title: ["ABC","DEF","GHI"]
};
}
render(){return(<Text>{this.state.title[1]}</Text>)}
module.exports = A;
Ruby 2.5
import {A} from "./A"
export default class B extends Component {
render(){return(<Text>{A.state.title[1]?? // not sure about this part
}</Text>)}
}
答案 12 :(得分:0)
我使用rbenv + passenger + nginx也遇到了同样的问题。我的解决方案只是将这两行代码添加到你的nginx配置中:
passenger_default_user root;
passenger_default_group root;