似乎无法在使用 Capistrano 部署的 Rails 应用程序服务器上使 Bundler 正确地 运行
Can't seem to get Bundler to run properly on Rails App server using Capistrano to deploy
我已经使用 Rails 几个月了,并制作了一个我试图用 Capistrano 部署的小应用程序。问题是当我 运行
$ cap production deploy
部署似乎 运行 正确,除了以下 3 个错误:
DEBUG [764d7f01] Running /usr/bin/env [ -L /var/www/rally_app/releases/20150513103829/public/assets ] as deploy@255.255.255.255
DEBUG [764d7f01] Command: [ -L /var/www/rally_app/releases/20150513103829/public/assets ]
DEBUG [764d7f01] Finished in 3.347 seconds with exit status 1 (failed).
DEBUG [929898d3] Running /usr/bin/env [ -d /var/www/rally_app/releases/20150513103829/public/assets ] as deploy@255.255.255.255
DEBUG [929898d3] Command: [ -d /var/www/rally_app/releases/20150513103829/public/assets ]
DEBUG [929898d3] Finished in 4.065 seconds with exit status 1 (failed).
DEBUG [8917ed02] Running /usr/bin/env ls /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest* as deploy@255.255.255.255
DEBUG [8917ed02] Command: cd /var/www/rally_app/releases/20150513103829 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.2.1 /usr/bin/env ls /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest* )
DEBUG [8917ed02] ls: cannot access /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest*: No such file or directory
DEBUG [8917ed02] Finished in 3.716 seconds with exit status 2 (failed).
此外,Bundler 似乎没有 运行 正确,因为即使应用程序应该在生产中使用 PostgreSQL,Passenger 也会给出有关 sqlite3 的错误说明:
Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
/var/www/rally_app/shared/bundle/ruby/2.2.0/gems/activerecord
我暂时将 RailsEnv 更改为 development 以查看这些日志。如果 Phusion Passenger 日志中的更多信息有助于 post,我很乐意 post。请告诉我。
我是 Linux 服务器管理员,但我是一个完整的 Rails/Passenger/rbenv/Capistrano 菜鸟,所以请在您的回复中考虑这一点。 :)
在此先感谢您的帮助。
亚历克西斯
我通过查看我的 deploy.rb 并取消注释
解决了这个问题
set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')
我认为缺少第二行是导致错误的原因。我也在我的服务器上手动创建了以上两个yaml文件。
我现在从 rails 收到一个关于 PostgreSQL 的错误,但这是一个更高级别的问题,所以我上面的问题已经解决了。感谢@wpp 的指点。
我已经使用 Rails 几个月了,并制作了一个我试图用 Capistrano 部署的小应用程序。问题是当我 运行
$ cap production deploy
部署似乎 运行 正确,除了以下 3 个错误:
DEBUG [764d7f01] Running /usr/bin/env [ -L /var/www/rally_app/releases/20150513103829/public/assets ] as deploy@255.255.255.255
DEBUG [764d7f01] Command: [ -L /var/www/rally_app/releases/20150513103829/public/assets ]
DEBUG [764d7f01] Finished in 3.347 seconds with exit status 1 (failed).
DEBUG [929898d3] Running /usr/bin/env [ -d /var/www/rally_app/releases/20150513103829/public/assets ] as deploy@255.255.255.255
DEBUG [929898d3] Command: [ -d /var/www/rally_app/releases/20150513103829/public/assets ]
DEBUG [929898d3] Finished in 4.065 seconds with exit status 1 (failed).
DEBUG [8917ed02] Running /usr/bin/env ls /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest* as deploy@255.255.255.255
DEBUG [8917ed02] Command: cd /var/www/rally_app/releases/20150513103829 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.2.1 /usr/bin/env ls /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest* )
DEBUG [8917ed02] ls: cannot access /var/www/rally_app/releases/20150513103829/public/assets/.sprockets-manifest*: No such file or directory
DEBUG [8917ed02] Finished in 3.716 seconds with exit status 2 (failed).
此外,Bundler 似乎没有 运行 正确,因为即使应用程序应该在生产中使用 PostgreSQL,Passenger 也会给出有关 sqlite3 的错误说明:
Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
/var/www/rally_app/shared/bundle/ruby/2.2.0/gems/activerecord
我暂时将 RailsEnv 更改为 development 以查看这些日志。如果 Phusion Passenger 日志中的更多信息有助于 post,我很乐意 post。请告诉我。
我是 Linux 服务器管理员,但我是一个完整的 Rails/Passenger/rbenv/Capistrano 菜鸟,所以请在您的回复中考虑这一点。 :)
在此先感谢您的帮助。
亚历克西斯
我通过查看我的 deploy.rb 并取消注释
解决了这个问题set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')
我认为缺少第二行是导致错误的原因。我也在我的服务器上手动创建了以上两个yaml文件。
我现在从 rails 收到一个关于 PostgreSQL 的错误,但这是一个更高级别的问题,所以我上面的问题已经解决了。感谢@wpp 的指点。