需要帮助。
当我尝试制作时
user@X220:~/rails_projects/sample_app$ heroku run rake db:migrate
有一个错误:
运行rake db:migrate on limitless-fjord-69900 .... up,run.2816 耙子流产!
Gem :: LoadError:为数据库适配器指定'postgresql',但未加载gem 将gem 'pg'
添加到您的Gemfile中(并确保其版本达到ActiveRecord所需的最低要求) /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:177:inrescue in spec' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:174:in
spec' 在/的/ {/ / / / / / / / / / / / / / / /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:inestablish_connection' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:120:in
execute_hook' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:45:ininstance_eval' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in
each' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:inblock in run_load_hooks' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:in
' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:26:inrun_load_hooks' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:315:in
' 。 。 。
任务:TOP => db:migrate => DB:load_config (通过使用--trace运行任务查看完整跟踪)
我的Gemfile是:
<top (required)>'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:8:in
怎么了?
答案 0 :(得分:2)
从gem 'sqlite3'
移除或评论Gemfile
,即使它位于development
群组中。
我不知道为什么,但是当Heroku在生产之外包含sqlite
gem时,Heroku不会运行你的应用程序。
如果您在开发中使用SQLite,则每次部署到Heroku时都必须发表评论gem 'sqlite'
并在部署后取消注释。
更好的方法是在开发中使用Postgres。
答案 1 :(得分:1)
如前所述,这可能与您的sqlite
宝石有关。
如果您仍想使用sqlite
,可以设置忽略该组。来自Heroku docs:
要指定不安装的gem组,可以使用
BUNDLE_WITHOUT
config var。
$ heroku config:set BUNDLE_WITHOUT="development:test"