Ruby 带Postgres和ActiveRecord的Sinatra |推送到Heroku的错误是:无效的数据库_URL

Ruby 带Postgres和ActiveRecord的Sinatra |推送到Heroku的错误是:无效的数据库_URL,ruby,postgresql,heroku,sinatra,Ruby,Postgresql,Heroku,Sinatra,我有一个用Sinatra编写的应用程序,在本地运行,但我似乎无法向heroku推进 当我尝试推送到heroku时,我得到以下错误: ----->正在写入config/database.yml以从数据库\u URL读取 无法检测到rake任务 确保您可以在不存在环境变量的情况下对应用程序运行$bundle exec rake-P 并使用Gemfile的生产组。 如果您希望运行rake任务,那么这可能是有意的 取消生成(CTRL+C)并修复错误,然后提交修复: 雷克流产了! 无效的数据库URL 我的

我有一个用Sinatra编写的应用程序,在本地运行,但我似乎无法向heroku推进

当我尝试推送到heroku时,我得到以下错误:

----->正在写入config/database.yml以从数据库\u URL读取 无法检测到rake任务 确保您可以在不存在环境变量的情况下对应用程序运行
$bundle exec rake-P
并使用Gemfile的生产组。 如果您希望运行rake任务,那么这可能是有意的 取消生成(CTRL+C)并修复错误,然后提交修复: 雷克流产了! 无效的数据库URL

我的档案

source 'https://rubygems.org'
ruby '2.0.0'

gem 'sinatra', require: 'sinatra/base'
gem "pg"
gem "activerecord"
gem "sinatra-activerecord"
gem "rake"

gem 'minitest', require: false
gem 'rack-test', require: false
gem 'faraday'
gem 'json'
gem 'minitest-reporters'
mydatabase.yml文件

development:
  adapter: postgresql
  encoding: unicode
  database: calendar_development
  host: localhost
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: calendar_test
  pool: 5
  host: localhost
  password:
My config.ru

require './app'
run Sinatra::Application

ENV['RACK_ENV'] ||= 'development'
程序文件

web: bundle exec rackup config.ru -p $PORT
耙子

require "sinatra/activerecord/rake"
require 'rake/testtask'
require "./app"

task :default => :test
env = ENV["SINATRA_ENV"] || "development"

Rake::TestTask.new do |t|
  t.libs << 'test'
  t.test_files = FileList["test/**/*_test.rb"]
  t.verbose = false
end

我从app.rb文件中删除了所有环境测试,并将其移动到环境:

app.rb

然后我更改了数据库设置-首先,删除了所有的ENV[SINATRA_ENV]

环境.rb

我换了我的耙子

我听从了sybohy的建议,在我的config.ru文件中,我删除了最后一行——离开

config.ru

require './app'
run Sinatra::Application

ENV['RACK_ENV'] ||= 'development'
我跑:

heroku插件| grep POSTGRES

抓住了db的名字(HEROKU_POSTGRESQL_JADE)

heroku pg:reset heroku_POSTGRESQL_JADE

然后迁移

heroku运行rake数据库:迁移



到目前为止,这似乎已经修复了错误!我会更新,如果我发现更多

您能否尝试编辑config.ru文件以删除最后一行,这样您就有了:
require./app“run Sinatra::Application
require './config/environments'
configure :production, :development, :test do
  db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/calendar_development')

  ActiveRecord::Base.establish_connection(
      :adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
      :host     => db.host,
      :username => db.user,
      :password => db.password,
      :database => db.path[1..-1],
      :encoding => 'utf8'
  )
end
namespace :db do
  task :seed do
    seed_file = File.join('db/seeds.rb')
    load(seed_file) if File.exist?(seed_file)
  end
end
require './app'
run Sinatra::Application