【问题标题】:Capistrano Rails app SQLite3 Cannot open DatabaseCapistrano Rails 应用程序 SQLite3 无法打开数据库
【发布时间】:2012-04-07 02:00:36
【问题描述】:

我已经设法将一个使用 Capistrano 部署的 Rails 应用程序部署到运行 NGinx 和Passenger 的服务器上。在部署时,我收到“我们很抱歉,出了点问题”消息,并且由于生产日志为空白而感到困惑。然后我在我的 NGinx Conf 中将rails_env 切换为development,现在我得到了:

SQLite3::CantOpenException

unable to open database file
Rails.root: /www/testcap/releases/20120407015032

我登录到服务器,进入testcap 中的current 文件夹(我相信它是指向最新版本的符号链接)并运行rake db:create,但是db 文件存在。查看应用程序的db 文件夹后,我看到了development.dbtest.db

如果我运行 rails s -e production 然后前往 myurl.com:3000 应用程序完全正常,这很奇怪,当我运行 rails s -e development 时它也运行良好。

我完全不知道这里可能存在什么问题。我确定这一定是一个相对明显的问题,可能与 capistrano 相关?我还是新手,所以我很可能会错过任何东西,但到目前为止谷歌搜索一直没有结果。

我唯一能想到的是,我的 config/deploy.rb 中没有与数据库明确相关的内容?但是到目前为止,我还没有在网上找到任何可以提供帮助的指南。

提前感谢您的帮助:)

杰克。

【问题讨论】:

  • 可能是文件权限问题?要测试,请尝试 chmod 777'ing .db 文件,然后查看它是否有效?
  • 你能运行cap deploy:migrate吗?如果文件存在,权限听起来可能是无法打开错误的答案。

标签: ruby-on-rails capistrano sqlite3-ruby


【解决方案1】:

感谢上面 Adam P 和 Ben L 的 cmets,我设法在这方面取得了一些进展。 This Guide 也解决了我的问题。

我按照上述指南中的步骤操作,在我的 database.yml 文件中,我将路径更改为 production 数据库:

`db/production.sqlite3`

`/www/testcap/shared/db/production.sqlite3` 

(例如绝对路径)

然后我将此添加到我的config/deploy.rb

role :db, "{my vps IP}", :primary => true

在我的 VPS 上,我进入了 nginx conf 并删除了 rails_env development 行(然后,Passenger 默认将其设置为 production)。

然后运行cap deploy,然后运行cap deploy:migrate,这很有效,当我访问该 URL 时,我会显示应用程序。

我希望这可以帮助将来遇到同样问题的人:)

杰克。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2011-12-01
    相关资源
    最近更新 更多