Heroku build error: Specified 'sqlite3' for database adapter, but the gem is not loaded
Heroku build error: Specified 'sqlite3' for database adapter, but the gem is not loaded
我想做什么
我正在使用 rails 构建应用程序并将非主 b运行ch 部署到 heroku master 测试生产中的应用程序。在我知道我在 Heroku 上做什么之前,我不想和 master 打交道,因此我部署了一个特性 b运行ch.
应用程序的存储库 can be found here 如果需要引用。
对 gemfile 进行任何更改后 运行:
bundle update
bundle install
git add .
git commit
git push heroku 0007/heroku:master
记录了最后一条命令 here and used to push a non-master branch to herokus master. Usually this is done because you don't want to mess with master. I also asked about this a while back.。
我调整了 database.yml 以适应 Heroku 对 postgresql 和 sqlite3 的要求。
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
我的 gemfile 也很简单:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
ruby '2.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', group: :development # Added development group.
gem 'pg', group: :production # Added postgres and made it production only.
gem 'rails_12factor'
# Specifying an exact Ruby version
ruby '2.4.1'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.4'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Step-by-step debugging and stack navigation in Pry
gem 'pry-byebug', platform: :ruby
# Pry is a powerful alternative to the standard IRB shell for Ruby
gem 'pry-rails'
# Pretty print your Ruby objects with style -- in full color and with proper indentation
gem 'awesome_print'
# Add a comment summarizing the current schema to the top or bottom of each of your ActiveRecord models, Specs, factory_girl factories...
gem 'annotate'
# Annotate guard runs the annotate gem when needed
gem 'guard-annotate', '~> 2.3'
# Use for fighting the N+1 problem in Ruby
gem 'bullet'
# Speedup RSpec + Cucumber by running parallel on multiple CPU cores
gem 'parallel_tests'
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13'
gem 'selenium-webdriver'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
# bundler-audit provides patch-level verification for Bundled apps
gem 'bundler-audit', '~> 0.6.0', require: false
# Bundler guard allows to automatically & intelligently install/update bundle when needed.
gem 'guard-bundler', '~> 2.1', require: false
# compare licenses against a user-defined whitelist, and give you an actionable exception report
gem 'license_finder', '~> 3.0', '>= 3.0.1', require: false
# Brakeman is an open source static analysis tool which checks Rails applications for security vulnerabilities.
gem 'brakeman', require: false
# Better Errors replaces the standard Rails error page with a much better and more useful error page
gem 'better_errors'
# necessary to use Better Errors' advanced features
gem 'binding_of_caller', platforms: :ruby
# RuboCop configuration which has the same code style checking as official Ruby on Rails
gem 'rubocop', '~> 0.51.0', require: false
gem 'guard-rubocop', require: false
# i18n-tasks helps you find and manage missing and unused translations
gem 'i18n-tasks', require: false
# IYE makes it easy to translate your Rails I18N files and keeps them up to date
gem 'iye', require: false
# Image Uploader Carrierwave for all kinds of Picture related jobs
gem 'carrierwave', '~> 1.0'
end
group :test do
# Guard is a command line tool to easily handle events on file system modifications
gem 'guard'
gem 'guard-minitest'
# This gem brings back assigns to your controller tests as well as assert_template
gem 'rails-controller-testing'
# To get the default Rails tests to show red and green at the appropriate times
gem 'minitest-reporters'
# Strategies for cleaning databases in Ruby. Can be used to ensure a clean state for testing.
gem 'database_cleaner'
# Code coverage for Ruby
gem 'simplecov', require: false
# Collection of testing matchers extracted from Shoulda
gem 'shoulda-matchers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
问题
在本地测试我的应用程序后,我决定将它推送到 Heroku,但是我无法解决依赖冲突。
疑似错误:
Specified 'sqlite3' for database adapter, but the gem is not loaded.
Add gem 'sqlite3'
to your Gemfile
我知道很多帖子都记录了这个问题。我梳理了它们以找到我遗漏的内容,但无济于事。
这些是我在这个问题上找到的帖子:
他们基本上都说,注意你将 postgresql 设置为生产数据库,将 sqlite3 设置为开发数据库,或者从一开始就使用 postgres 设置你的项目。
据我所知我已经涵盖了这个。
我将我的 gemfile 设置为使用 pg
作为生产数据库,sqlite3
作为开发数据库,如前所述 here, and here.
我的 gemfile 似乎没有任何 sqlite 的生产部门。
[57] → gem dependency -R sqlite
Gem sqlite3-1.3.13
hoe (~> 3.15, development)
hoe-bundler (~> 1.0, development)
mini_portile (~> 0.6.2, development)
minitest (~> 5.9, development)
rake-compiler (~> 0.9.3, development)
rake-compiler-dock (~> 0.5.2, development)
rdoc (~> 4.0, development)
Used by
awesome_print-1.8.0 (sqlite3 (>= 0, development))
database_cleaner-1.7.0 (sqlite3 (>= 0, development))
rails-controller-testing-1.0.2 (sqlite3 (>= 0, development))
sass-rails-5.0.7 (sqlite3 (>= 0, development))
尝试 运行 $ heroku run rake db:migrate
时问题开始显现。
这是从 heroku 生成的线索:
[159] → heroku logs --tail
2018-09-03T03:00:29.276401+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `tap'
2018-09-03T03:00:29.276425+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `perform'
2018-09-03T03:00:29.276472+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
2018-09-03T03:00:29.276495+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
2018-09-03T03:00:29.276518+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command/base.rb:63:in `perform'
2018-09-03T03:00:29.276542+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command.rb:44:in `invoke'
2018-09-03T03:00:29.276567+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>'
2018-09-03T03:00:29.276591+00:00 app[web.1]: from bin/rails:9:in `require'
2018-09-03T03:00:29.276615+00:00 app[web.1]: from bin/rails:9:in `<main>'
2018-09-03T08:35:36.524552+00:00 heroku[web.1]: State changed from crashed to starting
2018-09-03T08:35:39.232773+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 52942 -e production`
2018-09-03T08:35:42.729326+00:00 heroku[web.1]: State changed from starting to crashed
2018-09-03T08:35:42.656882+00:00 app[web.1]: => Booting Puma
2018-09-03T08:35:42.656898+00:00 app[web.1]: => Rails 5.1.6 application starting in production
2018-09-03T08:35:42.656899+00:00 app[web.1]: => Run `rails server -h` for more startup options
2018-09-03T08:35:42.656900+00:00 app[web.1]: Exiting
2018-09-03T08:35:42.656943+00:00 app[web.1]: /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec': Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
2018-09-03T08:35:42.656967+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/connection_specification.rb:185:in `spec'
2018-09-03T08:35:42.656977+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:880:in `establish_connection'
2018-09-03T08:35:42.656980+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:58:in `establish_connection'
2018-09-03T08:35:42.656982+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/railtie.rb:124:in `block (2 levels) in <class:Railtie>'
2018-09-03T08:35:42.656983+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:69:in `instance_eval'
2018-09-03T08:35:42.657020+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:69:in `block in execute_hook'
2018-09-03T08:35:42.657023+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:60:in `with_execution_control'
2018-09-03T08:35:42.657024+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:65:in `execute_hook'
2018-09-03T08:35:42.657027+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:50:in `block in run_load_hooks'
2018-09-03T08:35:42.657038+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:49:in `each'
2018-09-03T08:35:42.657065+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:49:in `run_load_hooks'
2018-09-03T08:35:42.657068+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/base.rb:326:in `<module:ActiveRecord>'
2018-09-03T08:35:42.657070+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/base.rb:25:in `<top (required)>'
2018-09-03T08:35:42.657073+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657083+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
2018-09-03T08:35:42.657086+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
2018-09-03T08:35:42.657110+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657113+00:00 app[web.1]: from /app/app/models/application_record.rb:1:in `<top (required)>'
2018-09-03T08:35:42.657123+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657128+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
2018-09-03T08:35:42.657152+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
2018-09-03T08:35:42.657153+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657154+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:379:in `block in require_or_load'
2018-09-03T08:35:42.657178+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:36:in `block in load_interlock'
2018-09-03T08:35:42.657181+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
2018-09-03T08:35:42.657184+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/concurrency/share_lock.rb:149:in `exclusive'
2018-09-03T08:35:42.657186+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies/interlock.rb:11:in `loading'
2018-09-03T08:35:42.657212+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:36:in `load_interlock'
2018-09-03T08:35:42.657213+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:357:in `require_or_load'
2018-09-03T08:35:42.657216+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:335:in `depend_on'
2018-09-03T08:35:42.657220+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:251:in `require_dependency'
2018-09-03T08:35:42.657224+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:476:in `block (2 levels) in eager_load!'
2018-09-03T08:35:42.657226+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:475:in `each'
2018-09-03T08:35:42.657230+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:475:in `block in eager_load!'
2018-09-03T08:35:42.657232+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:473:in `each'
2018-09-03T08:35:42.657234+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:473:in `eager_load!'
2018-09-03T08:35:42.657238+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:354:in `eager_load!'
2018-09-03T08:35:42.657240+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application/finisher.rb:67:in `each'
2018-09-03T08:35:42.657241+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application/finisher.rb:67:in `block in <module:Finisher>'
2018-09-03T08:35:42.657243+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:30:in `instance_exec'
2018-09-03T08:35:42.657247+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:30:in `run'
2018-09-03T08:35:42.657249+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:59:in `block in run_initializers'
2018-09-03T08:35:42.657250+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
2018-09-03T08:35:42.657252+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
2018-09-03T08:35:42.657254+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
2018-09-03T08:35:42.657257+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
2018-09-03T08:35:42.657259+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each'
2018-09-03T08:35:42.657260+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `call'
2018-09-03T08:35:42.657261+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
2018-09-03T08:35:42.657262+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
2018-09-03T08:35:42.657264+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
2018-09-03T08:35:42.657266+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:58:in `run_initializers'
2018-09-03T08:35:42.657267+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application.rb:353:in `initialize!'
2018-09-03T08:35:42.657268+00:00 app[web.1]: from /app/config/environment.rb:5:in `<top (required)>'
2018-09-03T08:35:42.657270+00:00 app[web.1]: from config.ru:3:in `require_relative'
2018-09-03T08:35:42.657273+00:00 app[web.1]: from config.ru:3:in `block in <main>'
2018-09-03T08:35:42.657274+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:55:in `instance_eval'
2018-09-03T08:35:42.657275+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:55:in `initialize'
2018-09-03T08:35:42.657278+00:00 app[web.1]: from config.ru:in `new'
2018-09-03T08:35:42.657279+00:00 app[web.1]: from config.ru:in `<main>'
2018-09-03T08:35:42.657280+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:49:in `eval'
2018-09-03T08:35:42.657283+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:49:in `new_from_string'
2018-09-03T08:35:42.657284+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:40:in `parse_file'
2018-09-03T08:35:42.657287+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:319:in `build_app_and_options_from_config'
2018-09-03T08:35:42.657288+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:219:in `app'
2018-09-03T08:35:42.657290+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:24:in `app'
2018-09-03T08:35:42.657291+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:354:in `wrapped_app'
2018-09-03T08:35:42.657294+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:283:in `start'
2018-09-03T08:35:42.657295+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:44:in `start'
2018-09-03T08:35:42.657301+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:135:in `block in perform'
2018-09-03T08:35:42.657302+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `tap'
2018-09-03T08:35:42.657305+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `perform'
2018-09-03T08:35:42.657306+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
2018-09-03T08:35:42.657307+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
2018-09-03T08:35:42.657308+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
2018-09-03T08:35:42.657311+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command/base.rb:63:in `perform'
2018-09-03T08:35:42.657312+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command.rb:44:in `invoke'
2018-09-03T08:35:42.657313+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>'
2018-09-03T08:35:42.657316+00:00 app[web.1]: from bin/rails:9:in `require'
2018-09-03T08:35:42.657318+00:00 app[web.1]: from bin/rails:9:in `<main>'
2018-09-03T08:35:42.704940+00:00 heroku[web.1]: Process exited with status 1
2018-09-03T09:52:58.423149+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=attendion.herokuapp.com request_id=fc40234e-28c4-4007-a780-1731f87512d4 fwd="87.144.250.234" dyno= connect= service= status=503 bytes= protocol=https
2018-09-03T09:52:59.224100+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=attendion.herokuapp.com request_id=786316ef-6db5-48b9-9590-5467827cf791 fwd="87.144.250.234" dyno= connect= service= status=503 bytes= protocol=https
SQLite 不适用于基于磁盘的 Heroku,而 Heroku 使用临时文件系统。
SQLite runs in memory, and backs up its data store in files on disk.
While this strategy works well for development, Heroku’s Cedar stack
has an ephemeral filesystem. You can write to it, and you can read
from it, but the contents will be cleared periodically. If you were to
use SQLite on Heroku, you would lose your entire database at least
once every 24 hours.
Even if Heroku’s disks were persistent running SQLite would still not
be a good fit. Since SQLite does not run as a service, each dyno would
run a separate running copy. Each of these copies need their own disk
backed store. This would mean that each dyno powering your app would
have a different set of data since the disks are not synchronized.
Heroku 提供 Postgres 作为 rails 的免费默认数据库,这非常接近推荐。
如果您要部署到 Postgres,您还应该 developing/testing 在 Postgres 上。
Differences between backing services mean that tiny incompatibilities
crop up, causing code that worked and passed tests in development or
staging to fail in production. These types of errors create friction
that disincentivizes continuous deployment. The cost of this friction
and the subsequent dampening of continuous deployment is extremely
high when considered in aggregate over the lifetime of an application.
如果你真的想坚持使用 SQLite,你需要正确配置适配器:
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
adapter: postgresql
# nothing else is needed
我不推荐这个。
我想做什么
我正在使用 rails 构建应用程序并将非主 b运行ch 部署到 heroku master 测试生产中的应用程序。在我知道我在 Heroku 上做什么之前,我不想和 master 打交道,因此我部署了一个特性 b运行ch.
应用程序的存储库 can be found here 如果需要引用。
对 gemfile 进行任何更改后 运行:
bundle update
bundle install
git add .
git commit
git push heroku 0007/heroku:master
记录了最后一条命令 here and used to push a non-master branch to herokus master. Usually this is done because you don't want to mess with master. I also asked about this a while back.
我调整了 database.yml 以适应 Heroku 对 postgresql 和 sqlite3 的要求。
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
我的 gemfile 也很简单:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
ruby '2.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', group: :development # Added development group.
gem 'pg', group: :production # Added postgres and made it production only.
gem 'rails_12factor'
# Specifying an exact Ruby version
ruby '2.4.1'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.4'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Step-by-step debugging and stack navigation in Pry
gem 'pry-byebug', platform: :ruby
# Pry is a powerful alternative to the standard IRB shell for Ruby
gem 'pry-rails'
# Pretty print your Ruby objects with style -- in full color and with proper indentation
gem 'awesome_print'
# Add a comment summarizing the current schema to the top or bottom of each of your ActiveRecord models, Specs, factory_girl factories...
gem 'annotate'
# Annotate guard runs the annotate gem when needed
gem 'guard-annotate', '~> 2.3'
# Use for fighting the N+1 problem in Ruby
gem 'bullet'
# Speedup RSpec + Cucumber by running parallel on multiple CPU cores
gem 'parallel_tests'
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13'
gem 'selenium-webdriver'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
# bundler-audit provides patch-level verification for Bundled apps
gem 'bundler-audit', '~> 0.6.0', require: false
# Bundler guard allows to automatically & intelligently install/update bundle when needed.
gem 'guard-bundler', '~> 2.1', require: false
# compare licenses against a user-defined whitelist, and give you an actionable exception report
gem 'license_finder', '~> 3.0', '>= 3.0.1', require: false
# Brakeman is an open source static analysis tool which checks Rails applications for security vulnerabilities.
gem 'brakeman', require: false
# Better Errors replaces the standard Rails error page with a much better and more useful error page
gem 'better_errors'
# necessary to use Better Errors' advanced features
gem 'binding_of_caller', platforms: :ruby
# RuboCop configuration which has the same code style checking as official Ruby on Rails
gem 'rubocop', '~> 0.51.0', require: false
gem 'guard-rubocop', require: false
# i18n-tasks helps you find and manage missing and unused translations
gem 'i18n-tasks', require: false
# IYE makes it easy to translate your Rails I18N files and keeps them up to date
gem 'iye', require: false
# Image Uploader Carrierwave for all kinds of Picture related jobs
gem 'carrierwave', '~> 1.0'
end
group :test do
# Guard is a command line tool to easily handle events on file system modifications
gem 'guard'
gem 'guard-minitest'
# This gem brings back assigns to your controller tests as well as assert_template
gem 'rails-controller-testing'
# To get the default Rails tests to show red and green at the appropriate times
gem 'minitest-reporters'
# Strategies for cleaning databases in Ruby. Can be used to ensure a clean state for testing.
gem 'database_cleaner'
# Code coverage for Ruby
gem 'simplecov', require: false
# Collection of testing matchers extracted from Shoulda
gem 'shoulda-matchers'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
问题
在本地测试我的应用程序后,我决定将它推送到 Heroku,但是我无法解决依赖冲突。
疑似错误:
Specified 'sqlite3' for database adapter, but the gem is not loaded. Add
gem 'sqlite3'
to your Gemfile
我知道很多帖子都记录了这个问题。我梳理了它们以找到我遗漏的内容,但无济于事。
这些是我在这个问题上找到的帖子:
他们基本上都说,注意你将 postgresql 设置为生产数据库,将 sqlite3 设置为开发数据库,或者从一开始就使用 postgres 设置你的项目。
据我所知我已经涵盖了这个。
我将我的 gemfile 设置为使用 pg
作为生产数据库,sqlite3
作为开发数据库,如前所述 here, and here.
我的 gemfile 似乎没有任何 sqlite 的生产部门。
[57] → gem dependency -R sqlite
Gem sqlite3-1.3.13
hoe (~> 3.15, development)
hoe-bundler (~> 1.0, development)
mini_portile (~> 0.6.2, development)
minitest (~> 5.9, development)
rake-compiler (~> 0.9.3, development)
rake-compiler-dock (~> 0.5.2, development)
rdoc (~> 4.0, development)
Used by
awesome_print-1.8.0 (sqlite3 (>= 0, development))
database_cleaner-1.7.0 (sqlite3 (>= 0, development))
rails-controller-testing-1.0.2 (sqlite3 (>= 0, development))
sass-rails-5.0.7 (sqlite3 (>= 0, development))
尝试 运行 $ heroku run rake db:migrate
时问题开始显现。
这是从 heroku 生成的线索:
[159] → heroku logs --tail
2018-09-03T03:00:29.276401+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `tap'
2018-09-03T03:00:29.276425+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `perform'
2018-09-03T03:00:29.276472+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
2018-09-03T03:00:29.276495+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
2018-09-03T03:00:29.276518+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command/base.rb:63:in `perform'
2018-09-03T03:00:29.276542+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command.rb:44:in `invoke'
2018-09-03T03:00:29.276567+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>'
2018-09-03T03:00:29.276591+00:00 app[web.1]: from bin/rails:9:in `require'
2018-09-03T03:00:29.276615+00:00 app[web.1]: from bin/rails:9:in `<main>'
2018-09-03T08:35:36.524552+00:00 heroku[web.1]: State changed from crashed to starting
2018-09-03T08:35:39.232773+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 52942 -e production`
2018-09-03T08:35:42.729326+00:00 heroku[web.1]: State changed from starting to crashed
2018-09-03T08:35:42.656882+00:00 app[web.1]: => Booting Puma
2018-09-03T08:35:42.656898+00:00 app[web.1]: => Rails 5.1.6 application starting in production
2018-09-03T08:35:42.656899+00:00 app[web.1]: => Run `rails server -h` for more startup options
2018-09-03T08:35:42.656900+00:00 app[web.1]: Exiting
2018-09-03T08:35:42.656943+00:00 app[web.1]: /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec': Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
2018-09-03T08:35:42.656967+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/connection_specification.rb:185:in `spec'
2018-09-03T08:35:42.656977+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:880:in `establish_connection'
2018-09-03T08:35:42.656980+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:58:in `establish_connection'
2018-09-03T08:35:42.656982+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/railtie.rb:124:in `block (2 levels) in <class:Railtie>'
2018-09-03T08:35:42.656983+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:69:in `instance_eval'
2018-09-03T08:35:42.657020+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:69:in `block in execute_hook'
2018-09-03T08:35:42.657023+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:60:in `with_execution_control'
2018-09-03T08:35:42.657024+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:65:in `execute_hook'
2018-09-03T08:35:42.657027+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:50:in `block in run_load_hooks'
2018-09-03T08:35:42.657038+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:49:in `each'
2018-09-03T08:35:42.657065+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/lazy_load_hooks.rb:49:in `run_load_hooks'
2018-09-03T08:35:42.657068+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/base.rb:326:in `<module:ActiveRecord>'
2018-09-03T08:35:42.657070+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/base.rb:25:in `<top (required)>'
2018-09-03T08:35:42.657073+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657083+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
2018-09-03T08:35:42.657086+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
2018-09-03T08:35:42.657110+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657113+00:00 app[web.1]: from /app/app/models/application_record.rb:1:in `<top (required)>'
2018-09-03T08:35:42.657123+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657128+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `block in require'
2018-09-03T08:35:42.657152+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
2018-09-03T08:35:42.657153+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in `require'
2018-09-03T08:35:42.657154+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:379:in `block in require_or_load'
2018-09-03T08:35:42.657178+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:36:in `block in load_interlock'
2018-09-03T08:35:42.657181+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
2018-09-03T08:35:42.657184+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/concurrency/share_lock.rb:149:in `exclusive'
2018-09-03T08:35:42.657186+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies/interlock.rb:11:in `loading'
2018-09-03T08:35:42.657212+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:36:in `load_interlock'
2018-09-03T08:35:42.657213+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:357:in `require_or_load'
2018-09-03T08:35:42.657216+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:335:in `depend_on'
2018-09-03T08:35:42.657220+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:251:in `require_dependency'
2018-09-03T08:35:42.657224+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:476:in `block (2 levels) in eager_load!'
2018-09-03T08:35:42.657226+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:475:in `each'
2018-09-03T08:35:42.657230+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:475:in `block in eager_load!'
2018-09-03T08:35:42.657232+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:473:in `each'
2018-09-03T08:35:42.657234+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:473:in `eager_load!'
2018-09-03T08:35:42.657238+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/engine.rb:354:in `eager_load!'
2018-09-03T08:35:42.657240+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application/finisher.rb:67:in `each'
2018-09-03T08:35:42.657241+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application/finisher.rb:67:in `block in <module:Finisher>'
2018-09-03T08:35:42.657243+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:30:in `instance_exec'
2018-09-03T08:35:42.657247+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:30:in `run'
2018-09-03T08:35:42.657249+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:59:in `block in run_initializers'
2018-09-03T08:35:42.657250+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
2018-09-03T08:35:42.657252+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
2018-09-03T08:35:42.657254+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
2018-09-03T08:35:42.657257+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
2018-09-03T08:35:42.657259+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each'
2018-09-03T08:35:42.657260+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `call'
2018-09-03T08:35:42.657261+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
2018-09-03T08:35:42.657262+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
2018-09-03T08:35:42.657264+00:00 app[web.1]: from /app/vendor/ruby-2.4.1/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
2018-09-03T08:35:42.657266+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/initializable.rb:58:in `run_initializers'
2018-09-03T08:35:42.657267+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/application.rb:353:in `initialize!'
2018-09-03T08:35:42.657268+00:00 app[web.1]: from /app/config/environment.rb:5:in `<top (required)>'
2018-09-03T08:35:42.657270+00:00 app[web.1]: from config.ru:3:in `require_relative'
2018-09-03T08:35:42.657273+00:00 app[web.1]: from config.ru:3:in `block in <main>'
2018-09-03T08:35:42.657274+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:55:in `instance_eval'
2018-09-03T08:35:42.657275+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:55:in `initialize'
2018-09-03T08:35:42.657278+00:00 app[web.1]: from config.ru:in `new'
2018-09-03T08:35:42.657279+00:00 app[web.1]: from config.ru:in `<main>'
2018-09-03T08:35:42.657280+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:49:in `eval'
2018-09-03T08:35:42.657283+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:49:in `new_from_string'
2018-09-03T08:35:42.657284+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/builder.rb:40:in `parse_file'
2018-09-03T08:35:42.657287+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:319:in `build_app_and_options_from_config'
2018-09-03T08:35:42.657288+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:219:in `app'
2018-09-03T08:35:42.657290+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:24:in `app'
2018-09-03T08:35:42.657291+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:354:in `wrapped_app'
2018-09-03T08:35:42.657294+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.5/lib/rack/server.rb:283:in `start'
2018-09-03T08:35:42.657295+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:44:in `start'
2018-09-03T08:35:42.657301+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:135:in `block in perform'
2018-09-03T08:35:42.657302+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `tap'
2018-09-03T08:35:42.657305+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands/server/server_command.rb:130:in `perform'
2018-09-03T08:35:42.657306+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
2018-09-03T08:35:42.657307+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
2018-09-03T08:35:42.657308+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
2018-09-03T08:35:42.657311+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command/base.rb:63:in `perform'
2018-09-03T08:35:42.657312+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/command.rb:44:in `invoke'
2018-09-03T08:35:42.657313+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>'
2018-09-03T08:35:42.657316+00:00 app[web.1]: from bin/rails:9:in `require'
2018-09-03T08:35:42.657318+00:00 app[web.1]: from bin/rails:9:in `<main>'
2018-09-03T08:35:42.704940+00:00 heroku[web.1]: Process exited with status 1
2018-09-03T09:52:58.423149+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=attendion.herokuapp.com request_id=fc40234e-28c4-4007-a780-1731f87512d4 fwd="87.144.250.234" dyno= connect= service= status=503 bytes= protocol=https
2018-09-03T09:52:59.224100+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=attendion.herokuapp.com request_id=786316ef-6db5-48b9-9590-5467827cf791 fwd="87.144.250.234" dyno= connect= service= status=503 bytes= protocol=https
SQLite 不适用于基于磁盘的 Heroku,而 Heroku 使用临时文件系统。
SQLite runs in memory, and backs up its data store in files on disk. While this strategy works well for development, Heroku’s Cedar stack has an ephemeral filesystem. You can write to it, and you can read from it, but the contents will be cleared periodically. If you were to use SQLite on Heroku, you would lose your entire database at least once every 24 hours.
Even if Heroku’s disks were persistent running SQLite would still not be a good fit. Since SQLite does not run as a service, each dyno would run a separate running copy. Each of these copies need their own disk backed store. This would mean that each dyno powering your app would have a different set of data since the disks are not synchronized.
Heroku 提供 Postgres 作为 rails 的免费默认数据库,这非常接近推荐。
如果您要部署到 Postgres,您还应该 developing/testing 在 Postgres 上。
Differences between backing services mean that tiny incompatibilities crop up, causing code that worked and passed tests in development or staging to fail in production. These types of errors create friction that disincentivizes continuous deployment. The cost of this friction and the subsequent dampening of continuous deployment is extremely high when considered in aggregate over the lifetime of an application.
如果你真的想坚持使用 SQLite,你需要正确配置适配器:
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
adapter: postgresql
# nothing else is needed
我不推荐这个。