我正在 Heroku 上设置 Ruby on Rails 应用程序。 Heroku 显然不支持 SQLite3,它是 Rails 的原生数据库,而是更喜欢 PostgreSQL。所以我将生产切换到该数据库。
数据库.yml
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
url: <%= ENV['DATABASE_URL'] %>
gem 文件
(相关部分)
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
我在浏览器中遇到的错误是:
An unhandled lowlevel error occurred. The application logs may have details.
深入研究应用程序日志,似乎存在错误:
#<RuntimeError: Missing
secret_key_basefor 'production' environment, set this value in
config/secrets.yml`>
我已经确认了正确的 DATABASE_URL
环境变量在我的 Heroku 设置中设置。我有 config/secrets.yml
在.gitignore
.我真的不想跟踪这个文件。我正在使用 Rails 5.0.1。我在这里做错了什么?数据库凭据包含在 DATABASE_URL
中环境变量。
最佳答案
我能给出的最佳答案是SWITCH EVERYTHING! :-)
说真的,在为两个不同的环境维护两个独立的数据库时,您会遇到永无休止的麻烦。将您的整个应用程序切换到 postgres,省去很多心痛。
以下是您拥有两个独立数据库时可能遇到的问题的一小部分示例:
- 支持的数据类型的差异。
- SQL 语法的差异。
- 性能优化的差异。
这是一个很好的过渡教程:http://railscasts.com/episodes/342-migrating-to-postgresql?view=asciicast
关于ruby-on-rails - Heroku Rails PostgreSQL 安装错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375029/