在Mac上安装Ruby on Rails

时间:2014-04-21 21:33:49

标签: ruby-on-rails ruby macos rails-spring

要在我的Mac上安装RoR(v10.9.2),我决定按照Ruby 1.9.2的说明进行操作:https://stackoverflow.com/a/8464619/2278546

“rvm install 1.9.2”花了太长时间,因此基于对SO的建议,我使用“rvm requirements”来单独安装macports的每个要求。然后我执行了“rvm install 1.9.2”并且运行得更快。

当我尝试执行“gem install rail”时,我收到一条错误消息

  

activesupport需要Ruby版本> = 1.9.3

结果,我回去再次尝试1.9.3:

rvm install 1.9.3
rvm --default 1.9.3
gem update
gem install rails

这次,在rails install命令期间,该过程无法安装rails的文档。我决定打断并运行它:

gem install --no-ri --no-rdoc rails

这很有效!我运行了以下内容:

rails new pong; cd pong; rails generate controller welcome index

该字符串中的最后一个命令给出了以下错误:

  

/Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/sid.rb:17:in   来自fiddle_func': uninitialized constant Spring::SID::DL (NameError) from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/sid.rb:30:in sid'   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/sid.rb:39:in   pgid' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/server.rb:78:in set_pgid'来自   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/server.rb:34:in   boot' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/server.rb:14:in 来自   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/run.rb:36:in   block in boot_server' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/run.rb:34:in 来自   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/run.rb:34:in   boot_server' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/run.rb:18:in 来电   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/command.rb:7:in   call' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/rails.rb:23:in 来电   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client/command.rb:7:in   call' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/client.rb:26:in 从'跑'   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/bin/spring:48:in   来自<top (required)>' from /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/binstub.rb:11:in 加载'   /Users/me/.rvm/gems/ruby-1.9.3-p545/gems/spring-1.1.2/lib/spring/binstub.rb:11:in   <top (required)>' from /Users/me/Coding/pong/bin/spring:16:in 需要来自/ Users / me / Coding / pong / bin / spring:16:来自bin / rails的<top (required)>' from bin/rails:3:in load':3:in''

根据阅读herehere以及其他地方的建议,我决定尝试使用其他编译器:

port install gcc46
CC=`which gcc-mp-4.6`
rvm reinstall 1.9.3
gem install
rvm reinstall 1.9.3

此安装也存在同样的问题。

2 个答案:

答案 0 :(得分:1)

我怀疑打断这些构建可能会让事情处于糟糕状态。首先,卸载1.9.2。 1.9.3-p545是迄今为止支持最早的版本,至少目前为止。

接下来,卸载gem&#39; spring-commands-rspec&#39;并运行宝石原始 - 所有。然后做另一个捆绑安装。 FWIW,我能够在我的10.9.2 macbook上运行spring。如果你的gcc给你带来问题,你可能不得不重新安装xcode命令行工具。

除此之外,你不需要弹簧来运行rails应用程序。它主要是开发和测试过程中的帮手。一旦你清理完东西,我就会从你的Gemfile中删除它,直到你确实需要它为止。

答案 1 :(得分:0)

我能够通过将@ Andrew的建议与一些常识混合来使事情得以运行......

我首先清理了我所做的混乱:

sudo rvm remove 1.9.2
sudo rvm remove 1.9.3
sudo rvm remove 1.9.3-p545
sudo gem uninstall spring-commands-rspec
sudo gem pristine -a
sudo port uninstall rvm

然后我重新安装了rvm

sudo port install rvm

并使用rails重新安装Ruby 1.9.3:

sudo rvm install 1.9.3
sudo gem update
sudo gem install --no-ri --no-rdoc rails

上述问题仍然存在。

然后我记得我在安装Ruby时收到了以下消息(确认了Andrew的评论):

  

警告:请注意您刚安装了没有的红宝石   维护时间更长(2014-02-23),维护红宝石列表访问:

http://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering
     

请考虑升级到ruby-2.1.1,它将包含所有内容   最新的安全补丁。

所以,我再次清理了一下:

sudo rvm remove 1.9.3
sudo rvm remove 1.9.3-p545
sudo gem uninstall spring-commands-rspec
sudo gem pristine -a

然后,我尝试安装Ruby 2.1.1和Rails:

sudo rvm install 2.1.1
sudo gem update
sudo gem install --no-ri --no-rdoc rails

这一次,我试图运行

时没有出错
rails new pong; cd pong; rails generate controller welcome index

这不是一个理想的答案,因为我仍然无法获得1.9.3的工作,但它符合我的目的(我认为)。任何人都有任何理论解释为什么1.9.3不起作用?

谢谢,

Grasswistle