2009-12-20 49 views
1

我正在学习Ruby on Rails与AWDR书,并且必须具体说明我在本地计算机上运行的Rails和Ruby版本。我刚刚发现我需要从ruby 1.8.7回滚到ruby 1.8.6 here。我还需要回滚Rails以支持脚手架方法,以便我可以轻松启动教程。管理许多不同版本的Ruby on Rails应用程序

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

在我看来,铁路对传统代码的低容忍抵消了其易用性理念!但我相信我会越来越欣赏RoR。

回答

2

RubyGems是Ruby的包管理器。您可以根据需要安装尽可能多的宝石(软件包)版本。您可以通过运行sudo gem install rails来安装最新版本(目前它将安装2.3.5)。如果您需要2.2.2,请使用-v--version选项指定:sudo gem install rails --version 2.2.2。 Rails还安装了一个二进制文件(是的,我知道它不是一个真正的二进制文件),它会生成一个项目。因为你有几个版本的宝石,你需要控制被调用的二进制文件。当您安装rails gem时,RubyGems会将一个文件放在它的bin/ dir中,这是与实际的rails二进制文件的“链接”。当你在命令行上说rails时,这是你“呼叫”的那个人。但是,所有rubygems“链接”二进制文件都接受它自己的参数,这是您要使用的版本。你会使用2.2.2导轨二进制这样的:

rails _2.2.2_ my_project 

我觉得默认的是使用最新的版本,所以如果你想使用最新的版本,这样做:

rails myproject 

但是,我看到您使用2.2.2来访问scaffold方法。我强烈建议你不要使用该方法,但有理由将其删除。 scaffold方法隐藏代码,并使定制变得困难。相反,使用脚手架发电机:

./script/generate scaffold --help 

祝你未来的铁轨冒险!

+0

是的,我看到脚手架已折旧。它在AWDR书中。一旦我阅读本书,我将从我的技能组中删除它:) 谢谢! – Rimian 2010-01-24 04:10:02

2

最新版本的Agile Web是为2.2.2编写的,我相信。对于这个基本的应用程序,他们引导你通过我非常确定它应该与2.3.x工作

你如何跟上问题的答案是,你需要更新你的应用程序,并阅读API和Changleogs找到了解已更改的内容并修复升级失败的内容。一个很好的方式来帮助这个有一个好的测试套件,测试覆盖面很好。

+0

有帮助的回答。但是这可能吗?如果我签约使用旧版本,我必须能够运行它。如果客户不希望我升级它会怎么样?但是,您的解决方案听起来很理想。 – Rimian 2009-12-20 04:37:34

+1

如果您需要运行旧版本的gems,请在environment.rb中指定它们及其版本,然后按照@khelll的建议将rails和gem冻结到vendor目录中。 – nitecoder 2009-12-20 11:42:24

3

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

  1. 确保安装正确的Rails版本,假设你想版本2.2.2:gem install rails V = 2.2.2
  2. rake rails:freeze:edge RELEASE=2.2.2

现在你会发现包装项目的供应商文件夹内Rails的,所以你不必在部署机器上安装Rails:与项目本身

  • 冷冻和包装轨。

    对于Ruby,我喜欢Ruby Version Manager(RVM),这是管理Ruby版本的最简单方法。

  • +0

    补充一下,现在我必须更多地了解你的答案!谢谢:) – Rimian 2009-12-20 04:38:09

    +0

    哪一部分你不明白? – khelll 2009-12-20 04:49:20

    +0

    我不知道宝石和耙子究竟是什么。我想我很快就会学到它。 如果我在我的项目中包装了rails,在十几个项目之后不会有大量的代码来管理吗? – Rimian 2009-12-20 09:43:11

    相关问题