新手问题 启动 rails server 命令,时好时坏~囧,求病根在哪!

barry · July 21, 2014 · Last by barry replied at July 23, 2014 · 5590 hits

各位大神, 你们好! 今天在启动 rails server 的时候,第一次输入 rails server,控制台是这么说的:

可是我输入 rails -v 是没有问题的啊

然后我换一个目录后就.......告诉我没有装 rails,怎么可能!!!!

通过 google 在网上找到了一个解决方法,但是指标不治本,只能在当前的终端下管用,换终端还得操作一遍,敢问我的病根在哪啊? 目前解决方案:在命令行把 ruby 和 rails 关联起来——

2 Floor has deleted

#1 楼 @sundevilyang 我就不懂了,rbenv 不但比 rvm 麻烦,而且切换原理跟 rvm 一样“脏”(通过不同的方法)。如果不喜欢 version manager 污染 shell,那就不要用 version manager。

从提示信息看,sample_app 的 Gemfile 里面指定了 ruby 版本,而 rvm 读取了这个信息,于是切换到了这个 ruby 版本,但是 rvm 没有安装这个 ruby 版本或者这个 ruby 版本没有安装 rails。

有没有 script/rails 文件?

是不是目录下有个 _rbenv-version 或者 _rvmrc

  1. 运行 rails server 会显示帮助,是因为你没有在 rails 项目的根目录下运行
  2. rvm 之前是用.rvmrc 文件控制 ruby 与 gemset 的自动切换,新版的 rvm 是用.ruby-gemset 和.ruby-version 控制,一般这三个文件在 git 里面要全局忽略

在工程目录下,运行下面命令 rvm use ruby-2.1.1@kitty --ruby-version

记得把 ruby-2.1.1 换成你的 ruby 版本,kitty 换成你的 gmeset 名,--ruby-version 参数是生成.ruby-gemset 和.ruby-version 文件

你可以运行rvm help use查看 use 指令的具体使用方法 https://rvm.io/workflow/projects#ruby-versions

如果bundle install没问题的话使用bundle exec rails server

第一个你在~目录下而不是 rails 项目下当然没有 rails server 的命令了. 第二个由于 ruby 版本区别造成,就是你在版本 a 下装了 rails,但是你现在用的版本 b,没有装 rails,gem 都是装在对应的 ruby 版本下的。可以执行一下 bundle install 第三 sudo 安装不是好习惯。

#3 楼 @Rei Ruby 社区有魅力的地方在于,你经常有可以多于 1 个的选择。RVM 和 rbenv 各有千秋吧,我水平可能不好。但这两个我都用过,我比较喜欢 rbenv。这个同学我认识六年多了,是我推荐他来学习 Ruby 的,也就相当于我向熟人推荐一个我认为好的东西吧。
@barry 我建议你 Google 一下 RVM vs rbenv 自己比较一下这两个工具,也是一个很好的学习过程:)

#10 楼 @sundevilyang 多谢哥啊!最近发现我终于从 java 严格的语法中解放出来了,编程变得很快乐!确实是好东西😆

#4 楼 @Rei :多谢了~Rei,病根是:没有在 rails 项目的根目录下运行,刚才试了,好使!

#5 楼 @dddd1919 这是干嘛的呢?

#7 楼 @cxh116 这是正解!!!果然在工程目录下才可以运行 rails s,好使了~,感谢啊

#9 楼 @flypiggys 执行 rvm gemset list_all , 结果如下,这是不是说明我只用了一个版本的 ruby 呢?

#13 楼 @barry 想多了。。。。没在 rails 目录下你运行什么呢?

#16 楼 @dddd1919 还以为 rails s 在任何目录下都可以运行呢~

You need to Sign in before reply, if you don't have an account, please Sign up first.