因为我是初学者 database.yml 一般都是填写 root 密码为空 但是要是部署到生产环境里的话 数据库是有密码的啊 这时要怎么写呢? 是要直接明文填写吗? 要是填了明文也不安全啊 那在 git 里要去掉 database.yml 了喽?
我是一直跟着 rails_tutorial 学习的 这教程里面教的都是直接 sqlite3 然后啥也不填 再然后直接推到 heorku 所以这个问题没搞清楚 求大神指教 谢谢
是的,git 里去掉有密码的配置文件,再把它们加到 gitignore 里
也可以试试 mongoid 的方法http://mongoid.org/docs/installation/configuration.html
development: host: localhost database: godfather_development test: host: localhost database: godfather_test # set these environment variables on your prod server production: host: <%= ENV['MONGOID_HOST'] %> port: <%= ENV['MONGOID_PORT'] %> username: <%= ENV['MONGOID_USERNAME'] %> password: <%= ENV['MONGOID_PASSWORD'] %> database: <%= ENV['MONGOID_DATABASE'] %> # slaves: # - host: slave1.local # port: 27018 # - host: slave2.local # port: 27019
谢谢@lainuo 指教 学习了:)刚刚去 github 查了几个 rails 的项目 确实看到都把 config/database.yml 放进 gitignore 里面了。
@cqpx 谢谢。第一次知道 mongoid。这个方法看起来挺好 不用写明文 不过我不太懂怎么在 producton server 上设置这个ENV[ ] 呢?
#4 楼 @DEEGAN 这是操作系统的环境变量
弄个 example 文件,部署的时候填
#5 楼 @fsword 谢谢。请问 ENV[ ] 这个是 hash 吗?要在哪里设置呢 linux 我只知道能在.bashrc 里面设置环境变量 是要在哪里面一个一个的设置吗 有没有例子可以看一下 多谢多谢
你可以在服务器上放一个真正的 database.yml
然后在 capistrano 里设置一个 task
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
#4 楼 @DEEGAN sorry..这好像是 mongoid 特有的办法。。 还是用 Rei 说的办法,平时写个 database.yml.example,部署的时候在 server 上改吧..
#6 楼 @Rei #9 楼 @cqpx 谢谢!刚才脑子不灵光 现在明白了!好办法!
我们之前用的一个办法是用一个 secret file 去渲染 databases.yml.erb,secret file 只在有权限部署的人那里传递,不妨在版本控制里面