【问题标题】:Sinatra on heroku production tries to load development gemsHeroku 生产上的 Sinatra 尝试加载开发 gem
【发布时间】:2015-03-31 09:23:40
【问题描述】:

为了学习 Sinatra,我刚刚为 heroku 部署了一个简单的应用程序。

我的配置文件:

require './main'
require 'sinatra'
run Sinatra::Application

宝石文件:

source 'http://rubygems.org'
ruby '1.9.3'
gem 'sinatra'
gem 'slim'
gem 'sass'
gem 'dm-core'
gem 'dm-migrations'
gem 'thin'
gem 'pg', :group => :production
gem 'dm-postgres-adapter', :group => :production
gem 'dm-sqlite-adapter', :group => :development

我在日志中收到以下错误:

2015-03-31T09:13:54.051645+00:00 heroku[web.1]: State changed from crashed to starting
2015-03-31T09:13:57.281158+00:00 heroku[web.1]: Starting process with command `bundle exec ruby main.rb -p 28463`
2015-03-31T09:13:59.598142+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.1/lib/dm-core/adapters.rb:163:in `require': cannot load such file -- dm-sqlite-adapter (LoadError)
2015-03-31T09:13:59.598161+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.1/lib/dm-core/adapters.rb:163:in `load_adapter'
2015-03-31T09:13:59.598164+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.1/lib/dm-core/adapters.rb:133:in `adapter_class'
2015-03-31T09:13:59.598165+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.1/lib/dm-core/adapters.rb:13:in `new'
2015-03-31T09:13:59.598167+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.1/lib/dm-core.rb:230:in `setup'
2015-03-31T09:13:59.598169+00:00 app[web.1]:    from /app/song.rb:5:in `block in <top (required)>'
2015-03-31T09:13:59.598171+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.4.6/lib/sinatra/base.rb:1410:in `configure'
2015-03-31T09:13:59.598172+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.4.6/lib/sinatra/base.rb:1989:in `block (2 levels) in delegate'
2015-03-31T09:13:59.598174+00:00 app[web.1]:    from /app/song.rb:4:in `<top (required)>'
2015-03-31T09:13:59.598178+00:00 app[web.1]:    from main.rb:6:in `require'
2015-03-31T09:13:59.598187+00:00 app[web.1]:    from main.rb:6:in `<main>'

2015-03-31T09:14:00.479331+00:00 heroku[web.1]: State changed from starting to crashed
2015-03-31T09:14:00.461548+00:00 heroku[web.1]: Process exited with status 1

我尝试了here 提出的解决方案,但没有奏效。

提前感谢您的想法

【问题讨论】:

  • 您的song.rb 文件是什么样的,特别是在第 4 行附近?我怀疑您在每个环境中为您的数据库使用相同的 URL,您需要确保在生产中使用不同的 URL。
  • 这是一个加载错误,而不是安装错误(正如您所指出的),因此您可能在应用程序中的某处调用DataMapper 的 SQL 适配器,即使应用程序正在运行production 环境(可能在数据库连接/初始化过程中)。验证您在使用dm-sqlite-adapter 时是否进行了环境检查。更好的是,让你的本地环境和 Heroku 环境尽可能接近(安装 Postgres),因为当你的数据库不同时(根据经验),奇怪的错误将难以确定。

标签: heroku sinatra gemfile


【解决方案1】:

我认为您的 Gemfile 中需要数据映射器。

gem "datamapper"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多