Deploying to Production in Rails 3.2.6 with Twitter-Bootstrap-Rails

Lee*_*ond 5 ruby deployment capistrano ruby-on-rails twitter-bootstrap-rails

hey folks I'm having a bit of an issue trying to deploy my rails 3.2.6 app to production, deploy seems to go fine right up until it gets to precompiling assets here is the error I'm getting:

command finished in 1740ms
  * executing "cd /home/deployer/apps/stealthygecko/releases/20120717222341 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
servers: ["xx.xxx.xxx.xxx"]
[xx.xxx.xxx.xxx] executing command
 ** [out :: xx.xxx.xxx.xxx] rake aborted!
 ** [out :: xx.xxx.xxx.xxx] no such file to load -- addressable/uri
 ** [out :: xx.xxx.xxx.xxx] 
 ** [out :: xx.xxx.xxx.xxx] (See full trace by running task with --trace)
command finished in 3131ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/deployer/apps/stealthygecko/releases/20120717222341; true"
servers: ["xx.xxx.xxx.xxx"]
[xx.xxx.xxx.xxx] executing command
command finished in 786ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.2@stealthygecko_rewrite' -c 'cd /home/deployer/apps/stealthygecko/releases/20120717222341 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'"
Run Code Online (Sandbox Code Playgroud)

I've tried setting "config.assets.compile = false" to see if this helps but I still get the same error.

here is my deploy script:

server  "xx.xxx.xxx.xxx", :web, :app, :db, primary: true                                                                                                                                                    
depend :remote, :gem, "bundler", ">=1.1.3"                                                                                                                                                                  
depend :remote, :gem, "rake", ">=0.9.2.2"                                                                                                                                                                   

set :application, "stealthygecko"                                                                                                                                                                           
set :user, :"deployer"                                                                                                                                                                                      
set :deploy_to, "/home/#{user}/apps/#{application}"                                                                                                                                                         
set :deploy_via, :remote_cache                                                                                                                                                                              
set :use_sudo, false                                                                                                                                                                                        

set :scm, :git                                                                                                                                                                                              
set :repository, "git@github.com:StealthyGecko/stealthygecko.git"                                                                                                                                           
set :branch, "master"                                                                                                                                                                                       

default_run_options[:pty] = true                                                                                                                                                                            
set :ssh_options, {:forward_agent => true}                                                                                                                                                                  

set :ruby_version, "ruby-1.9.2"                                                                                                                                                                             
set :gemset_name, "stealthygecko_rewrite"                                                                                                                                                                   
set :rvm_ruby_gemset, "#{ruby_version}@#{gemset_name}"                                                                                                                                                      
set :bundle_without, [:darwin, :development, :test]                                                                                                                                                         

require "rvm/capistrano"                                                                                                                                                                                    
load 'deploy/assets'                                                                                                                                                                                        
set :rvm_ruby_string, "#{rvm_ruby_gemset}"                          # Select the gemset                                                                                                                     
set :rvm_type, :user                                                # RVM install is in the deploying user's home directory                                                                                 
#                                                                                                                                                                                                           
before "deploy:assets:precompile", "bundle:install"                                                                                                                                                         
after "deploy", "deploy:cleanup" # keep only the last 5 releases                                                                                                                                            

namespace :deploy do                                                                                                                                                                                        
  %w[start stop restart].each do |command|                                                                                                                                                                  
    desc "#{command} unicorn server"                                                                                                                                                                        
    task command, roles: :app, except: {no_release: true} do                                                                                                                                                
      run "cd #{deploy_to}/current && /etc/init.d/unicorn_stealthygecko restart"                                                                                                                            

    end                                                                                                                                                                                                     
  end                                                                                                                                                                                                       

  task :setup_config, roles: :app do                                                                                                                                                                        
    puts "Symlinking nginx and unicorn configs"                                                                                                                                                             
    sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"                                                                                                                
    sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}"                                                                                                                
    run "mkdir -p #{shared_path}/config"                                                                                                                                                                    
    put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
    puts "Now edit the config files in #{shared_path}."                                                                                                                                                     
  end                                                                                                                                                                                                       
  after "deploy:setup", "deploy:setup_config"                                                                                                                                                               

  task :symlink_config, roles: :app do                                                                                                                                                                      
    puts "Symlinking database yml"                                                                                                                                                                          
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"                                                                                                                    
    puts "Database Symlink done!"                                                                                                                                                                           
  end                                                                                                                                                                                                       
  after "deploy:finalize_update", "deploy:symlink_config"                                                                                                                                                   

  desc "Make sure local git is in sync with remote."                                                                                                                                                        
  task :check_revision, roles: :web do                                                                                                                                                                      
    unless `git rev-parse HEAD` == `git rev-parse origin/master`                                                                                                                                            
      puts "WARNING: HEAD is not the same as origin/master"                                                                                                                                                 
      puts "Run `git push` to sync changes."                                                                                                                                                                
      exit                                                                                                                                                                                                  
    end                                                                                                                                                                                                     
  end                                                                                                                                                                                                       
  before "deploy", "deploy:check_revision"                                                                                                                                                                  
end
Run Code Online (Sandbox Code Playgroud)

Apologies if its a bit of a mess its cobbled together from various Tutorials I read up on. And here is my Gemfile:

source 'http://rubygems.org'                                                                                                                                                                                

gem 'rake'                                                                                                                                                                                                  
gem 'rails', '3.2.6'                                                                                                                                                                                        
gem 'mysql2'                                                                                                                                                                                                
gem 'bcrypt-ruby', '~> 3.0.0'                                                                                                                                                                               
gem 'gravtastic'                                                                                                                                                                                            
gem "friendly_id"                                                                                                                                                                                           
gem "rinku", '~>1.2.2', :require => 'rails_rinku'                                                                                                                                                           
gem "videawesome"                                                                                                                                                                                           
gem "will_paginate", "~>3.0.3"                                                                                                                                                                              
gem "tweet-button"                                                                                                                                                                                          
gem "bitly"                                                                                                                                                                                                 
gem "sanitize"                                                                                                                                                                                              
gem "newrelic_rpm"                                                                                                                                                                                          
gem 'capistrano'                                                                                                                                                                                            
gem 'rvm-capistrano'                                                                                                                                                                                        
gem "unicorn", "~> 4.2.1"                                                                                                                                                                                   
gem "twitter", "2.2.2"                                                                                                                                                                                      
gem 'instagram', :git => 'git://github.com/StealthyGecko/instagram-ruby-gem-lee.git'                                                                                                                        

group :assets do                                                                                                                                                                                            
  gem 'coffee-script'                                                                                                                                                                                       
  gem 'jquery-rails'                                                                                                                                                                                          
  gem 'uglifier'                                                                                                                                                                                            
  gem 'therubyracer'                                                                                                                                                                                        
  gem 'execjs'                                                                                                                                                                                              
  gem 'twitter-bootstrap-rails'                                                                                                                                                                             
end                                                                                                                                                                                                         

gem 'rspec-rails', :group => [:test, :development]                                                                                                                                                          
group :test do                                                                                                                                                                                              
  gem 'sqlite3'                                                                                                                                                                                             
  gem 'guard-rspec'                                                                                                                                                                                         
  gem 'capybara'                                                                                                                                                                                            
  gem 'launchy'                                                                                                                                                                                             
  gem 'shoulda', '3.0.0.beta2'                                                                                                                                                                              
  gem 'factory_girl_rails'                                                                                                                                                                                  
  gem 'ruby-debug19', :require => 'ruby-debug'                                                                                                                                                              
  gem 'turn', :require => false                                                                                                                                                                             
end 
Run Code Online (Sandbox Code Playgroud)

I know its a bit of a long shot but if anyone can spot where I'm going wrong or if anyone has come up against this problem and managed to solve it please let me know as I've been banging my head against this problem for a few hours now.


当它失败时,它似乎说"没有这样的文件加载 - 可寻址/ uri"但是我不确定它在哪里使用以及为什么它被用于编译资产

有什么建议?

Mor*_*rty 1

显然已修复以下内容:http://www.kudelabs.com/2012/03/28/rails-3-2-cap-deploy-with-assets


UPDATE2:查看你的 cap 脚本后,你有before "deploy:assets:precompile", "bundle:install"

尝试删除它并添加:require 'bundler/capistrano'

删除load 'deploy/assets'并将其放入您的 Capfile 中。


更新:查看railsgenerate rspec:install后返回“无法在任何源中找到addressable-2.2.8”http://addressable.rubyforge.org/api/

检查你的 Gemfile.lock

Using addressable (X.X.X) 
Run Code Online (Sandbox Code Playgroud)

这可能应该是 Gemfile 中其中一个 gem 的依赖项。否则,您可以尝试手动添加。

我有...

...
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'therubyracer', :platforms => :ruby
  gem 'uglifier', '>= 1.0.3'
  gem 'twitter-bootstrap-rails'
end
...
Run Code Online (Sandbox Code Playgroud)

在我的 Gemfile.lock 中

...
addressable (2.2.8)
...
Run Code Online (Sandbox Code Playgroud)
$ cat Capfile
Run Code Online (Sandbox Code Playgroud)

您需要取消注释加载“部署/资产”

load 'deploy'
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy' # remove this line to skip loading any of the default tasks
Run Code Online (Sandbox Code Playgroud)