Java Rails将Rails应用程序上载到乘客服务器

Java Rails将Rails应用程序上载到乘客服务器,java,ruby-on-rails,deployment,java-web-start,Java,Ruby On Rails,Deployment,Java Web Start,我已将Rails应用程序从svn存储库上载到服务器。在我的本地主机中,它可以正常工作,但当我尝试通过Chrome访问时,会出现以下错误: There appears to be a database problem. Your config/database.yml may not be written correctly. Please check it and fix any errors. Your database schema may be out of date or nonexis

我已将Rails应用程序从svn存储库上载到服务器。在我的本地主机中,它可以正常工作,但当我尝试通过Chrome访问时,会出现以下错误:

There appears to be a database problem.
Your config/database.yml may not be written correctly. Please check it and fix any errors.
Your database schema may be out of date or nonexistant. Please run rake db:migrate to ensure that the database schema is up-to-date.
The database server may not be running. Please check whether it's running, and start it if it isn't.
我不知道该怎么做,因为这是我第一次尝试上传rails项目,我在远程服务器中的localhost中也做了同样的事情


顺便问一下,我应该通过ssh连接也运行rails吗?

更新:要做的第一件事是了解部署:

问题是,在您的服务器上,您需要像在本地计算机上一样设置数据库。从SVN签出代码只会得到应用程序,而不是数据库

您在标题中提到您已在服务器上设置了Passenger。Passenger是Apache(或Nginx)的一个模块,它取代了您在开发中使用的
rails s
命令。您需要在此乘客配置文件中设置
RailsEnv
,以确定应用程序启动和运行的内容和方式

如果数据库服务器相同(如两个平台上的MySQL)且环境相同(如“开发”),并且如果
app/db/database.yml
文件已签入源代码管理,则跳过

如果您的数据库和环境不同(例如开发中的SQLLite和生产中的MySQL),那么您需要在database.yml中添加必要的配置——数据库名称、主机、端口、usename、环境密码(并根据环境在gem文件中指定适当的数据库gem)。如果您正在存储密码,我不建议签入database.yml文件,但这是一个单独的主题。最后,您需要在服务器上的database.yml中具有正确的数据库配置

然后,您可以从应用程序的根目录在服务器上运行bundle exec rake db:setup。这将使用当前架构初始化数据库,并运行所需的任何seeds.rb安装程序。检查<代码> RAK-T-<代码>,查看您可能考虑的其他选项。

完成后,后续部署要求您从SVN签出最新代码,并通常重新启动应用程序(对于Passenger,这是通过应用程序根目录中的命令
touch tmp/restart.txt
完成的。如果您对数据库结构进行了更改,在重新启动之前,请运行
bundle exec rake db:migrate

哦,是的,在生产环境中,如果您使用的是默认环境,您还需要第一次运行
bundle exec rake assets:precompile
,如果您添加了图像、更改了javascript/coffeescript或css/sass文件,那么每次都需要运行


话虽如此,@rwilliams关于Capistrano的评论肯定是你需要考虑的。正如你所看到的,部署是很棘手的,随着你的应用越来越大,你会希望它变得简单。Capistrano允许你设置一个脚本,让部署成为一个命令,比如
cap deploy
cap staging deploy:migrations
。需要学习的东西很多,但值得付出努力。

签出Capistrano和Deprec。我不明白你的意思。我忘记了这个错误:
数据库配置没有指定适配器(ActiveRecord::AdapterNotSpecified)
顺便说一句-连接到什么?