0

**「herokudb:push sqlite://mydatabase.db」を実行すると、Ruby + Sinatra + Sqlite3 + Herokuに問題が発生します:

私がするとき: "heroku db:push sqlite://anotador.db"

コンソールログ:

2013-01-21T12:37:11+00:00 app[web.1]: Errno::ENOENT - No such file or directory - /app/views/home.erb:
2013-01-21T12:37:11+00:00 app[web.1]:   /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:572:in `erb'

私のanotador.rb:

require 'rubygems'  
require 'sinatra'  
require 'data_mapper'

DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/anotador.db")  
class Nota  
  include DataMapper::Resource  
  property :id, Serial  
  property :content, Text, :required => true  
  property :complete, Boolean, :required => true, :default => false  
  property :created_at, DateTime  
  property :updated_at, DateTime  
end  
DataMapper.finalize.auto_upgrade! 

私のGemFile:

source :rubygems
gem 'sinatra'
gem 'data_mapper' 
gem 'rack-flash'
gem 'sinatra-redirect-with-flash'
gem 'builder'
gem 'dm-postgres-adapter', :group => :production
gem 'dm-sqlite-adapter', :group => :development
gem 'thin'

group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

コマンドラインで:

$ bundle
$ git init 
$ git add .
$ git commit -m "comentario" 
$ heroku create nombreAPP --stack cedar
$ git push heroku master 

$ heroku addons:add heroku-postgresql:dev
$ heroku pg:promote <DATABASE_URL>  
$ heroku db:push sqlite://anotador.db 

HerokuはPostgresとSQLiteを使用していないことを知っています

ただし、Herokuには、データベースを移動し、SQLiteを使用して次のリンクに例示されているPostgresを使用する機能があります。

https://devcenter.heroku.com/articles/ruby#using-a-sql-database _

私は開発と本番環境でsqlite3を使用していますPostgres

GemFileの場合:

group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

このリンクには例があります:

http://yamilurbina.com/post/4854924459/deploying-a-sinatra-datamapper-sqlite-app-to-heroku

4

1 に答える 1

1

私の知る限り、Heroku では SQLite3 を使用できません。代わりに Postgres または Mysql データベースを使用できます。

だからあなたが言うとき

heroku db:push sqlite://mydatabase.db

あなたはそれをすべきではありません。Heroku では SQLite Gem が利用できないため、動作しません。とはdb:push? それはいくつかのレーキタスクですか?それをHerokuに指定する必要があると思います。

于 2013-01-21T13:59:47.017 に答える