2013-01-21 77 views
0

**當我做 「的Heroku DB:推源碼://mydatabase.db」 我用Ruby +西納特拉+ SQLITE3 + Heroku的一個問題:Heroku的DB:推源碼://mydatabase.db錯誤

當我這樣做: 「Heroku的DB:推源碼://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#使用-A-SQL的數據庫

我用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

+1

完整的錯誤堆棧跟蹤將有助於 – ch4nd4n

+0

請原諒我問明顯,但有一個叫當你運行'意見/ home.erb'文件'git ls-files | grep home'? – iain

+0

您顯示的錯誤看起來像來自普通請求('web.1'),而不是'db:push'的結果,並且說Sinatra無法找到模板文件'home.erb' - 與數據庫無關。運行'db:push'後立即得到什麼信息? – matt

回答

1

據我所知,你不能在Heroku上使用SQLite3。您可以改用Postgres或Mysql數據庫。

所以,當你說

heroku db:push sqlite://mydatabase.db 

你不應該這樣做。它不會工作,因爲SQLite Gem在Heroku上不可用。什麼是db:push?這是一些耙子任務嗎?我想你仍然需要將它指定給Heroku。

+0

我認爲Ck-是正確的,AFAIK你將無法將Sqlite數據庫推送到Heroku,但是你可以將Heroku中的postgres數據庫拖到你的本地SQLite中。我從來沒有嘗試過其他方式。 –

+0

我知道的Heroku Postgres的使用和SQL不 但是Heroku的具有移動數據庫,並使用SQL的Postgres 在這個環節中示例的能力: https://devcenter.heroku.com/articles/ruby#使用-A -sql-database – Gabriel

+0

您確定該錯誤消息是特定於sqlite嗎?這是'/ app/views/home.erb'的惡作劇,你可以驗證數據庫是否有數據? – ch4nd4n