2015-03-13 108 views
4

我目前正在尝试使用Capistrano 3部署Rails 4应用程序。一切顺利,但我遇到了一个问题,是的!我无法在我的应用程序中运行任何rails命令。在capistrano部署后,Rails 4未检测到应用程序

这里是我的相关Capistrano的插件:

gem 'capistrano-rails' 
gem 'capistrano-unicorn-nginx' 
gem 'capistrano-rbenv' 
gem 'capistrano-secrets-yml' 
gem 'capistrano-rails-console' 

所以,当我运行一个cap production rails:console它给我这样的输出:

[b2458a1e] Running /usr/bin/env [ -d ~/.rbenv/versions/2.1.1 ] as [email protected] 
DEBUG [b2458a1e] Command: [ -d ~/.rbenv/versions/2.1.1 ] 
DEBUG [b2458a1e] Finished in 0.528 seconds with exit status 0 (successful). 
INFO [2d552562] Running ~/.rbenv/bin/rbenv exec bundle exec rails console production as [email protected] 
DEBUG [2d552562] Command: (RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.1 ~/.rbenv/bin/rbenv exec bundle exec rails console production) 
Usage: 
    rails new APP_PATH [options] 

Options: 
    -r, [--ruby=PATH]          # Path to the Ruby binary of your choice 
                 # Default: /home/rails_app/.rbenv/versions/2.1.1/bin/ruby 
    -m, [--template=TEMPLATE]        # Path to some application template (can be a filesystem path or URL) 
     [--skip-gemfile], [--no-skip-gemfile]    # Don't create a Gemfile 
    -B, [--skip-bundle], [--no-skip-bundle]    # Don't run bundle install 
    -G, [--skip-git], [--no-skip-git]      # Skip .gitignore file 
     [--skip-keeps], [--no-skip-keeps]     # Skip source control .keep files 
    -O, [--skip-active-record], [--no-skip-active-record] # Skip Active Record files 
    -S, [--skip-sprockets], [--no-skip-sprockets]   # Skip Sprockets files 
     [--skip-spring], [--no-skip-spring]    # Don't install Spring application preloader 
    -d, [--database=DATABASE]        # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/ frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc) 
                 # Default: sqlite3 
    -j, [--javascript=JAVASCRIPT]       # Preconfigure for selected JavaScript library 
                 # Default: jquery 
    -J, [--skip-javascript], [--no-skip-javascript]  # Skip JavaScript files 
     [--dev], [--no-dev]        # Setup the application with Gemfile pointing to your Rails checkout 
     [--edge], [--no-edge]        # Setup the application with Gemfile pointing to Rails repository 
     [--skip-turbolinks], [--no-skip-turbolinks]  # Skip turbolinks gem 
    -T, [--skip-test-unit], [--no-skip-test-unit]   # Skip Test::Unit files 
     [--rc=RC] 

任何想法?

更新13/03 - 增加deploy.rb

# config valid only for current version of Capistrano 
lock '3.3.5' 

set :application, 'my_app' 
set :repo_url, '[email protected]:foo/my_app.git' 

# Default branch is :master 
# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }.call 
set :branch, 'master' 

# Default deploy_to directory is /var/www/my_app_name 
set :deploy_to, '/var/www/my_app' 

# Default value for :linked_files is [] 
set :linked_files, fetch(:linked_files, []).push('config/database.yml') 

# Default value for linked_dirs is [] 
set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') 

set :rbenv_ruby, '2.1.1' 
+0

'rails:console'任务来自哪里?我没有看到它列出的任何capistrano宝石提供的。 – 2015-03-13 19:30:20

+0

你确认了什么Rails环境被调用? (正在看你的'INFO [2d552562]正在运行〜/ .rbenv/bin/rbenv exec bundle exec rails console production as user @ x.x.x.x' line)。你能够直接登录到服务器并使用'相同的bundle exec'命令来调用'rails c'吗? – rdnewman 2015-03-13 19:31:30

+0

@MattBrictson它来自这个插件(capistrano-rails-console)https://github.com/ydkn/capistrano-rails-console – Awea 2015-03-13 19:47:34

回答

7

我认为问题是,你缺少你的Rails应用程序的部署副本的bin/rails。这是我会做的:

  1. 确保您的bin目录的内容被添加,提交并推送到您的git存储库。这将包括bin/railsbin/rake
  2. 删除bin来自Capistrano的:linked_dirs设置在您的deploy.rb中。
  3. 重新部署。
+0

你是对的解决它 - ) – Awea 2015-03-16 10:47:35

+0

非常感谢你! :) – 2015-05-16 22:09:20

相关问题