错误消息:未知数据库'someweb_production'(Mysql2 :: Error)

时间:2012-03-13 18:16:42

标签: ruby-on-rails apache passenger

我试图使用Phusion Passenger在Apache上运行Ruby on Rails的Web应用程序。我已经配置了httpd.conf文件。

我还有另一个与“rails”服务器一起运行的应用程序'命令,它连接到开发数据库。但是,我不明白为什么与apache一起运行的应用程序试图连接到我还没有创建的生产数据库,而不是应该开发。

我必须配置什么才能使我的Ruby on Rails应用程序作为开发运行?

2 个答案:

答案 0 :(得分:0)

Apache with Phusion提供了一个生产级别的Web服务器环境,rails server(WEBrick)是一个简单的Web服务器,可以让您在本地进行测试。您通常在给定的计算机上使用其中一个。但并非总是如此: - )

但是要回答你的问题,Rails使用哪个数据库是由RAILS_ENV变量决定的,默认情况下是productiondevelopmenttest之一。

创建新的rails应用程序时,会在文件app/config/database.yml中创建默认数据库配置 - 有单独的部分提供连接到数据库的必要参数。可以在environment.rbapp/config/environments/<name>.rb中指定其他特定于环境的配置。

在您的Passenger配置中,您可以按照http://www.modrails.com/documentation/Users%20guide%20Apache.html#rails_env中的说明设置RAILS_ENV变量。

我刚才意识到Passenger似乎正在寻找生产(期望数据库名称为someweb_production) - 您可能需要在生产环境中运行bundle exec rake db:migrate才能生成(创建并)初始化数据库。在这种情况下,您可能还需要传递environment参数。

对于本地配置(rails server),服务器将查找名为RAILS_ENV的shell环境变量,您还可以在命令行上传递特定环境,例如rails server --environment=development。我想如果两者都没有指定,则rails服务器默认为development

答案 1 :(得分:0)

问题是我在Apache conf文件中没有包含以下行:

RailsEnv development
RackEnv development