我正在使用AWDR书学习Ruby on Rails,并且必须具体说明我在本地计算机上运行的Rails和Ruby版本。我刚刚发现我需要从ruby 1.8.7回滚到ruby 1.8.6 here。我还需要回滚Rails来支持scaffold方法,这样我就可以轻松地开始教程了。
我的问题是:当我开始在现实世界中签约,开发和部署项目时,我将如何管理所有这些不同的版本?
在我看来,Rail对遗留代码的低容忍性否定了它的易用性理念!但我相信我会逐渐欣赏RoR。
答案 0 :(得分:3)
至于Rails,你可以做的就是冻结你的版本,例如:
gem install rails
v = 2.2.2 rake rails:freeze:edge RELEASE=2.2.2
现在您会发现Rails已打包在项目的vendor文件夹中,因此您无需在部署计算机上安装Rails。
对于Ruby,我喜欢Ruby Version Manager(RVM),这是管理Ruby版本的最简单方法。
答案 1 :(得分:2)
我相信最新版本的Agile Web是针对2.2.2编写的。对于这个基本应用程序,他们引导您完成我非常肯定它应该适用于2.3.x
关于如何跟上的问题的答案是您根据需要更新应用程序并阅读api和Changleogs以找出已更改的内容并修复升级中断的内容。一个很好的方法就是拥有一个良好的测试套件和良好的测试覆盖率。
答案 2 :(得分:2)
RubyGems是Ruby的包管理器。您可以根据需要安装任意数量的gem(包)。您可以通过运行sudo gem install rails
安装最新版本(目前它将安装2.3.5)。如果您需要2.2.2,请使用-v
或--version
选项指定:sudo gem install rails --version 2.2.2
。 Rails还会安装一个二进制文件(是的,我知道它不是一个真正的二进制文件),rails
,它生成一个项目。因为你有几个版本的gem,你需要控制调用哪个二进制文件。当您安装rails gem时,RubyGems会在其bin/
目录中放置一个文件,该文件是真实rails
二进制文件的“链接”。当你在命令行上说rails
时,那就是你“呼叫”的那个。但是,所有rubygems“链接”二进制文件都接受它自己的参数,这是您要使用的版本。您可以像这样使用2.2.2 rails二进制文件:
rails _2.2.2_ my_project
我认为默认设置是使用最新版本,因此如果您想使用最新版本,请执行以下操作:
rails myproject
但是,我发现您使用2.2.2来访问scaffold
方法。我强烈建议你不要使用那种方法,有理由将其删除。 scaffold
方法隐藏代码,并且难以进行自定义。相反,使用脚手架生成器:
./script/generate scaffold --help
祝你未来的铁路冒险好运!