【发布时间】:2012-01-22 22:46:21
【问题描述】:
我是 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
所以,在所有情况下,我的路由、缓存或 wathever 似乎都有一些问题。
这些是我的规格:
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 教程所建议的。编写 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?
【问题讨论】:
-
您的部署似乎奏效了,
about.html.erb渲染得很好(Rendered pages/about.html.erb within layouts/application (2.0ms)证明了这一点)。真正的问题是什么?当您访问about的 URL 时,您是否看到有关未找到数据库的错误消息?您的问题不清楚。 -
缓存未命中不是错误消息,也不会在任何地方显示“错误”。你说它渲染正确(在3.1下)。真正的问题是什么?
-
您没有描述任何“严重问题”,而且看起来它正在以应有的方式工作。如果你真的想知道“如何部署到生产环境”,这里有数百个问题和互联网上的 HOWTOs。就目前而言:太笼统了。
-
嗯...我猜这可能是一般情况。潜入一组新工具时的正常问题。我会尝试缩小范围,编辑和改写......
-
@Zabba:我收到了 404 - 页面不退出消息。但是,我意识到我可能无法具体得到正确的答案。我会尝试找出一个更好的问题。
标签: ruby-on-rails ruby deployment heroku production