Rails,Git推送数据库重置

时间:2014-12-04 20:23:25

标签: ruby-on-rails ruby git openshift

更新:我的生产数据库实际上也设置为sqlite。然而,它没有解释擦拭......?

原件:

我现在正在跟随迈克尔·哈特尔Rail tutorial,几乎到了这封信。唯一的区别是我使用OpenShift部署我​​的应用程序,使用PostgreSQL盒式磁带。不幸的是,每次我正在推动openshift,服务器重启我的应用程序(正常),我的数据库被擦除(不正常,我认为?)。然后我必须重新运行所有迁移,并再次填满数据库。我还注意到,如果我从OpenShift中取出,那么我的本地数据库(我的计算机上的sqlite)也会被删除。

这是我的宝石文件:

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails',        '4.2.0.rc1'
gem 'bcrypt',       '3.1.7'
gem 'bootstrap-sass',   '3.2.0.0'
gem 'sass-rails',   '~> 5.0.0.beta1'
gem 'uglifier',     '>= 2.5.3'
gem 'coffee-rails',     '~> 4.1.0'
gem 'jquery-rails', '4.0.0.beta2'   
gem 'turbolinks',   '2.3.0'
gem 'jbuilder',     '~> 2.2.3'
gem 'sdoc',         '~> 0.4.0', group: :doc

group :development, :test do
  gem 'sqlite3',        '1.3.9'
  gem 'debugger'
  gem 'web-console',        '~> 2.0'
  gem 'spring',         '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',         '0.17.1'
  gem 'rails_12factor', '0.0.2'
  gem 'unicorn',    '4.8.3'
end 

这是我的.gitignore:

# Ignore bundler config.
/.bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp

这是我的database.yml:

default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

在此先感谢您的帮助,欢迎提出所有建议!

1 个答案:

答案 0 :(得分:0)

听起来您的应用程序正在使用sqlite数据库而不是postgresql数据库,请仔细检查您的数据库配置。另外,请确保您没有任何代码可以删除并重新创建数据库(例如“test”设置“)。也许发布数据库yml文件的”已清理“版本?

每当你git推送你的应用程序时,它会清除你的sqlite数据库存储的位置。如果你想使用sqlite,你需要将它存储在你的OPENSHIFT_DATA_DIR中,但我们建议使用mysql或postgres,这样你的应用程序可以根据需要进行缩放。