管理不同版本的许多Ruby on Rails应用程序

时间:2009-12-20 03:55:39

标签: ruby-on-rails ruby

我正在使用AWDR书学习Ruby on Rails,并且必须具体说明我在本地计算机上运行的Rails和Ruby版本。我刚刚发现我需要从ruby 1.8.7回滚到ruby 1.8.6 here。我还需要回滚Rails来支持scaffold方法,这样我就可以轻松地开始教程了。

我的问题是:当我开始在现实世界中签约,开发和部署项目时,我将如何管理所有这些不同的版本?

在我看来,Rail对遗留代码的低容忍性否定了它的易用性理念!但我相信我会逐渐欣赏RoR。

3 个答案:

答案 0 :(得分:3)

至于Rails,你可以做的就是冻结你的版本,例如:

  1. 确保安装正确的Rails版本,假设您需要2.2.2版:gem install rails v = 2.2.2
  2. 使用项目本身冻结和打包Rails:rake rails:freeze:edge RELEASE=2.2.2
  3. 现在您会发现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

祝你未来的铁路冒险好运!