我做了passengers's offical tutorial没有错误。我从git中提取代码并使用此命令
bundle install --deployment --without development test
bundle exec rake assets:precompile db:migrate
我的database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
adapter: sqlite3
database: db/production.sqlite3
日志/ production.log:
I, [2015-08-28T15:54:47.310372 #32086] INFO -- : Started GET "/" for 176.219.167.108 at 2015-08-28 15:54:47 -0400
I, [2015-08-28T15:54:47.334003 #32086] INFO -- : Processing by ArticlesController#index as HTML
I, [2015-08-28T15:54:47.365923 #32086] INFO -- : Completed 500 Internal Server Error in 31ms (ActiveRecord: 0.9ms)
F, [2015-08-28T15:54:47.367834 #32086] FATAL -- :
ActiveRecord::StatementInvalid (Could not find table 'users'):
app/models/ability.rb:5:in `initialize'
我在rails console上使用此命令检查了我的用户表
ActiveRecord::Base.connection.tables
不过,我为用户使用了devise gem。
我绝对是关于rails的初学者,我希望我写的信息足以让你理解问题。
和我的服务器信息:Digital Ocean 5 $ Droplet。 Ubuntu 14.04。 Nginx,passenger,rvm,ruby 2.2.2。
和我的500页:image
答案 0 :(得分:1)
您应该只需运行以下内容即可解决此问题:
RAILS_ENV=production bundle exec rake db:migrate
但是,我建议您不要在生产中使用SQLite,因为这种类型的数据库最适合测试和开发。您可能希望研究使用PostgreSQL。以下内容适用于您:
在您的 Gemfile 中,添加:
gem 'pg', :group => :production
运行bundle install
。
然后在 database.yml 中使用:
default: &default
adapter: postgresql
encoding: unicode
pool: 10
timeout: 5000
login: &login
username: <%= ENV['DATABASE_USER'] %>
password: <%= ENV['DATABASE_PASS'] %>
production:
<<: *default
<<: *login
database: your_database_name
出于安全考虑,最好不要在Rails应用程序的文件中以明文形式编写数据库用户名和密码。将它们设置为环境变量要好得多。为此,请编辑Droplet上的〜/ .bash_profile 文件并添加以下内容:
export DATABASE_USER=your_username
export DATABASE_PASS=your_password
退出该文件并从命令行运行source ~/.bash_profile
以将这些新设置加载到内存中。
然后,您需要创建PostgreSQL数据库,其中有plenty of guides online。
完成后,您将需要在生产中运行迁移时运行适用于SQLite的相同命令:
RAILS_ENV=production bundle exec rake db:migrate
希望这有帮助!