2014-01-10 157 views
4

我正在部署使用mina部署的rails 4應用程序。我的部署腳本是rails 4 + mina部署失敗

require 'mina/bundler' 
require 'mina/rails' 
require 'mina/git' 
require 'mina/rvm' # for rvm support. (http://rvm.io) 

set :domain, 'someplace.com' 
set :deploy_to, '/home/deploy/projects/website' 
set :repository, '[email protected]:someone/repo.git' 
set :branch, 'master' 

set :identity_file, "#{ENV['HOME']}/.ssh/id_rsa" 
set :user, 'deploy' # Username in the server to SSH to. 

set :shared_paths, ['config/database.yml', 'config/credentials.yml', 'log', 'tmp'] 

task :environment do 
    invoke :'rvm:use[[email protected]]' 
end 

task :setup => :environment do 
    queue! %[mkdir -p "#{deploy_to}/shared/log"] 
    queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/log"] 

    queue! %[mkdir -p "#{deploy_to}/shared/config"] 
    queue! %[chmod g+rx,u+rwx "#{deploy_to}/shared/config"] 

    queue! %[touch "#{deploy_to}/shared/config/database.yml"] 
    queue %[echo "-----> Be sure to edit 'shared/config/database.yml'."] 

    queue! %[touch "#{deploy_to}/shared/config/credentials.yml"] 
    queue %[echo "-----> Be sure to edit 'shared/config/credentials.yml'."] 
end 

desc "Deploys the current version to the server." 
task :deploy => :environment do 
    deploy do 
    invoke :'git:clone' 
    invoke :'deploy:link_shared_paths' 
    invoke :'bundle:install' 
    invoke :'rails:assets_precompile' 

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

當我部署爲「米娜部署」,我得到錯誤的

... 

Symlinking shared paths 
$ mkdir -p "./config" 
$ mkdir -p "." 
$ rm -rf "./config/database.yml" 
$ ln -s "/home/deploy/projects/website/shared/config/database.yml" "./config/database.yml" 
$ rm -rf "./config/credentials.yml" 
$ ln -s "/home/deploy/projects/website/shared/config/credentials.yml" "./config/credentials.yml" 
$ rm -rf "./log" 
$ ln -s "/home/deploy/projects/website/shared/log" "./log" 
$ rm -rf "./tmp" 
$ ln -s "/home/deploy/projects/website/shared/tmp" "./tmp" 

-----> Installing gem dependencies using Bundler 
$ mkdir -p "/home/deploy/projects/website/shared/bundle" 
$ mkdir -p "./vendor" 
$ ln -s "/home/deploy/projects/website/shared/bundle" "./vendor/bundle" 
$ bundle install --without development:test --path "./vendor/bundle" --binstubs bin/ --deployment 

... 

Your bundle is complete! 
Gems in the groups development and test were not installed. 
It was installed into ./vendor/bundle 

-----> Precompiling asset files 
$ RAILS_ENV="production" bundle exec rake assets:precompile RAILS_GROUPS=assets 
rake aborted! 
File exists @ dir_s_mkdir - /home/deploy/projects/website/tmp/build-138935597031149/tmp 
/home/deploy/projects/website/tmp/build-138935597031149/vendor/bundle/ruby/2.1.0/gems/sprockets-2.10.1/lib/sprockets/cache/file_store.rb:25:in `[]=' 
/home/deploy/projects/website/tmp/build-138935597031149/vendor/bundle/ruby/2.1.0/gems/sprockets-2.10.1/lib/sprockets/caching.rb:34:in `cache_set' 

回答

6

確保該共享/ tmp目錄,如果不使用SSH連接服務器和

創建
$ mkdir /home/deploy/projects/website/shared/tmp 

請確保您擁有正確的權限。 drwxr-xr-x

+0

這固定我有同樣的錯誤,歡呼聲 – Omni

1

如果您符合您的tmp目錄,請確保它存在。如果它沒有破解的符號鏈接將導致相同的問題。