如何在Dreamhost Rails 3.0.4上部署测试应用程序?

时间:2011-02-21 22:51:42

标签: ruby ruby-on-rails-3 dreamhost passenger

这个周末我一直在尝试在Dreamhost共享服务器上设置Rails 3.0.4应用程序。我跟着this wiki article在服务器上设置了我自己的rubygems集。此外,我还使用以下命令安装了rvm和ruby 1.9.2:

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
rvm use 1.9.2 --default

执行ruby -v会返回ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux],所以我相信rvm已正确安装了ruby版本。

我创建了我的应用程序,强制使用mysql数据库,然后生成了文章控制器:

rails new test_app -d mysql
cd test_app
rails g scaffold articles title:string body:text

现在,当我访问域名时,我看到通常的“欢迎乘坐Ruby on Rails!”屏幕,但如果我点击“关于你的应用程序的环境”链接,我会得到一些看起来像是某种乘客的错误:

无法启动Ruby(Rack)应用程序 应用程序在启动期间(即在config / environment.rb的评估期间)退出。错误消息可能已写入Web服务器的日志文件。请检查Web服务器的日志文件(即不是(Rails)应用程序的日志文件)以找出应用程序退出的原因。如果这没有帮助,请使用下面的回溯来调试问题。

最后,如果我通过SSH连接到服务器并执行rails s我可以看到应用程序在端口3000上正常运行。

我以前从未将应用投入生产,所以我很困惑。乘客不使用RVM版本的ruby吗?这些甚至可以在DreamHost共享服务器上使用吗?我该怎么做才能解决这个问题?

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:4)

我已经成功地将一个Rails 3.2.2应用程序部署到Dreamhost。以下是我为自己写的一些笔记。


在本地开发机器上

首先,Dreamhost Passenger基于Ruby 1.8.7,而不是Ruby 1.9.2。因此,Dreamhost不会喜欢你的一些Ruby代码,因为它有一些新的键值语法。所以寻找这样的代码:

key: "value"

更改为Ruby 1.8.7样式(Ruby 1.9.2也可以理解):

:key => "value"

我发现你可以通过这样的方式找到这个代码...这可以在* nix框上更有效地完成,但这就是我在Windows中安装了一些* nix命令的方法:

egrep -r -i "^.*\w: .*$" . | grep rb

修复语法后,您需要捆绑您的宝石,以便Dreamhost不会抱怨您的机架版本。

$> bundle package

在服务器上(又名Dreamhost)

(在dreamhost上获取文件。就个人而言,我提交并将更改推送到git远程存储库,然后 git pull 将它们下载到dreamhost上的私人文件夹。在他们到达之后,我将它们复制到Passenger文件夹中)

然后我从Rails应用程序文件夹( /home/username/www.myapp.com / )运行这些命令:

$> bundle install --path vendor/bundle --local
$> rake db:migrate RAILS_ENV="production"
$> bundle exec rake assets:precompile
$> touch tmp/restart.txt
瞧,瞧,这似乎有效。如果仍然无法正常工作,请查看log / production.log。

答案 1 :(得分:3)

我遇到了同样的问题。我相信这是因为乘客没有加载您在rvm中指定的红宝石解释器,因为它或您指定的宝石。您可能会看到正在加载的宝石参考/ usr / ... 我碰到了这个http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration,但是我无法解决Dreamhost在其乘客配置中使用ruby 1.8.7而你和我想使用1.9.2