【问题标题】:Mina deploy can't find bundleMina 部署找不到捆绑包
【发布时间】:2016-01-09 17:45:21
【问题描述】:

第一次使用 Ruby on Rails 应用程序尝试 Mina,但以 root 用户身份部署时,似乎看不到 Bundler。

我使用 Digital Ocean 作为远程服务器。

如果我以相同的 root 用户身份通过​​ SSH 连接到远程服务器,则 bundle 运行良好。 Git 克隆工作,文件结构通过 :setup 设置,其他一切似乎都很好。

部署使用的是“root”用户,是的,我最终会更改为另一个用户。

这是我的 deploy.rb

require 'mina/bundler'
require 'mina/rails'
require 'mina/git'

set :domain, 'example.com'
set :deploy_to, '/var/www/example.com'
set :repository, 'git@git.example.co:example.git'
set :branch, 'digital_ocean'
set :shared_paths, ['log']

# Optional settings:
set :user, 'root'    # Username in the server to SSH to.

task :setup => :environment do
  ... *standard code removed*
end

desc "Deploys the current version to the server."
task :deploy => :environment do
  to :before_hook do
    # Put things to run locally before ssh
  end
  deploy do
    # Put things that will set up an empty directory into a fully set-up
    # instance of your project.
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    invoke :'bundle:install'
    invoke :'rails:db_migrate'
    invoke :'rails:assets_precompile'
    invoke :'deploy:cleanup'

    to :launch do
      queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
      queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
    end
  end
end

这是来自 'mina deploy --verbose' 的 --verbose 输出:

-----> Creating a temporary build path
   $ touch "deploy.lock" 
   $ mkdir -p "$build_path" 
   $ cd "$build_path" 

-----> Fetching new git commits
   $ (cd "/var/www/example.com/scm" && git fetch "git@git.example.co:example.git" "digital_ocean:digital_ocean" --force) 
   -----> Using git branch       Cloning into '.'...

-----> Using git branch 'digital_ocean'
   done.
   $ git clone "/var/www/example.com/scm" . --recursive --branch "digital_ocean" 

-----> Using this git commit

   $ git rev-parse HEAD > .mina_git_revision 
   $ git --no-pager log --format='%aN (%h):%n> %s' -n 1 
   Carson Cole (e932114): 
   > removed gemfile.lock 
   $ rm -rf .git 


-----> Symlinking shared paths
   $ mkdir -p "." 
   $ rm -rf "./log" 
   bash: line 93: bundle: command not found
   $ ln -s "/var/www/example.com/shared/log" "./log" 

-----> Installing gem dependencies using Bundler
   $ mkdir -p "/var/www/example.com/shared/bundle" 
   $ mkdir -p "./vendor" 
   $ ln -s "/var/www/example.com/shared/bundle" "./vendor/bundle" 
   $ bundle install --without development:test --path "./vendor/bundle" --deployment 
!     ERROR: Deploy failed.   

-----> Cleaning up build
   $ rm -rf "$build_path" 
   Unlinking current 
   $ rm -f "deploy.lock" 
   OK 

!     Command failed.
   Failed with status 1 (19)

【问题讨论】:

  • mina setup 为我工作

标签: ruby-on-rails ruby deployment


【解决方案1】:

假设你的服务器上安装了 bundler,如果在路径中找不到它,你必须specify the full path to the bundle command

set :bundle_bin, "/path/to/bundle"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多