Ruby On Rails部署 - 我应该使用什么版本的RoR?

时间:2012-01-22 22:46:21

标签: ruby-on-rails ruby deployment heroku production

我是Ruby on Rails的新手,我在部署RoR应用程序时遇到了一些问题。

编辑1:尝试缩小问题范围。我不确定我的基本Ruby应用程序部署的问题是我错误的设置和编码的结果,还是我目前正在使用的Ruby on Rails版本中的冲突。

改述问题:我应该使用哪个版本的Ruby on Rails?作为框架的新手,我只希望我的部署过程尽可能顺利。如果3.2是官方下载(截至2012年1月20日)是否可以安全使用,那么我应该使用最新的稳定版Ruby(1.9.3-p0)吗?书籍和着作中提到的宝石怎么样?我应该总是使用最新的吗?

旧讨论


我关注Ruby On Rails Tutorial。按照本书中的说明,我尝试在Heroku上部署,但没有运气。 Heroku日志中的打印输出:

2012-01-22T18:26:09+00:00 app[web.1]: Started GET "/pages/about" for 90.231.141.39 at  
2012-01-22T18:26:09+00:00 app[web.1]: cache: [GET /pages/about] miss
2012-01-22T18:26:09+00:00 app[web.1]: ActiveRecord::ConnectionNotEstablished   
(ActiveRecord::ConnectionNotEstablished):

此应用程序此时不使用任何数据库(仅显示静态页面)。所以对我来说,ActiveRecord错误并不令人惊讶。不确定,如果这是问题的根源。我首先想到这个问题是由Heroku实现的,因为我的rails server部署工作正常,但是我找到了rails server -e production命令来在生产环境中运行rails服务器。在Rails 3.1.3下,这会正确呈现页面,但我仍然在服务器日志中收到以下错误消息:

sample_app$ rails server -e production
=> Booting WEBrick
=> Rails 3.1.3 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-01-22 23:07:28] INFO  WEBrick 1.3.1
[2012-01-22 23:07:28] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0]
[2012-01-22 23:07:28] INFO  WEBrick::HTTPServer#start: pid=57161 port=3000
cache: [GET /] miss
cache: [GET /pages/about] miss
Started GET "/pages/about" for 127.0.0.1 at 2012-01-22 23:09:50 +0100
Processing by PagesController#about as HTML
Rendered pages/about.html.erb within layouts/application (2.0ms)
Completed 200 OK in 24ms (Views: 24.2ms | ActiveRecord: 0.0ms)
cache: [GET /assets/application-cd728f3a08415c27ca2e753d30091c74.css] miss

在我看来,存在某种路由问题。但是我缺乏对RoR的知识和经验使我在寻找实际错误时成为一个跛脚的人。

升级到Rails 3.2.0使问题更加严重。我基本上用Rails 3.2做了一个示例应用程序:

rails new test_app

输入“test_app”文件夹并运行rails server -e production(使用Ruby 1.9.3-p0)。这次甚至没有呈现默认的Ruby on Rails索引页面。服务器日志给了我:

heroku_test$ rails server -e production
=> Booting WEBrick
=> Rails 3.2.0 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-01-22 23:19:07] INFO  WEBrick 1.3.1
[2012-01-22 23:19:07] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0]
[2012-01-22 23:19:07] INFO  WEBrick::HTTPServer#start: pid=63242 port=3000
cache: [GET /] miss

所以,在所有情况下,似乎我的路由或缓存或监视器都存在一些问题。

这些是我的规格:

System specs: Mac OS X Lion 10.7.2
Ruby: 1.9.3-p0
Rails: 3.1.3 (and also 3.2.0 release the other day)

我非常清楚这些规范并不是Ruby on Rails Tutorial提出的。 RoR教程的编写遵循以下规范:

Ruby: 1.9.2 (or 1.8.7)
Rails: 3.0.11

chapter 13中,Hartl解释了与Rails 3.1.x的区别,并为sample_app提供了升级指南。我已经浏览了这一章(因为我被困在第3章),但一直无法找到解决问题的方法。

我的问题是什么?

如何将RoR应用程序部署到我的系统上运行的RoR版本的生产中?

到目前为止我浏览过的相关链接和来源,除了RoR.org和Heroku.com上的常规页面:

cache: [GET /] miss? dalli gem, memcached, rails 3.1, nginx, unicorn production environment

How does one load a CSS framework in Rails 3.1?

rails 3 tutorial: No route matches [GET] “/”

Rails 3.1 on Heroku Cedar

2 个答案:

答案 0 :(得分:1)

@jollyCocoa,部署到Heroku时遇到的错误是由于没有设置数据库引起的。即使您没有使用数据库,如果您仍然配置数据库连接,它将修复此错误。但是,如果您从RoR开始,并且只是想要尝试一些东西,请不要尝试在此时部署到Heroku。只需从本地运行的非常简单的应用程序开始,即使只是“rails new”生成的“骨架”应用程序,也可以一步一步地进行更改,在每个步骤检查应用程序是否仍在运行。如果您遇到困难并且无法弄清楚如何使某个功能正常工作,您可以发布更具体的问题。

答案 1 :(得分:1)

现在问题已经改变了:

“我应该使用什么版本的Ruby on Rails?作为框架的新手,我只希望我的部署过程尽可能顺利。”

如果您正在从书籍或教程中学习,请使用与该书/教程中的示例相同的版本。

“书籍和着作中提到的宝石怎么样?我应该总是使用最新的宝石吗?”

大多数宝石都依赖于其他宝石,因此您使用的确切版本通常依赖于这些依赖项。有时您甚至可能会发现一个版本中的错误,因此您切换到另一个版本来解决问题。或者,如果您正在阅读使用某个版本的书籍/教程,您可能希望使用相同的版本(至少在您完成本教程时)。但是,如果你没有充分的理由使用旧版本,那么通常你应该使用最新版本。

您是否学会了如何使用Bundler?它允许您控制要使用的每个gem的确切版本。