2013-01-05 3 views
15

Я успешно установил приложение Rails (3.2.10) на сервере Ubuntu 12.04 на Rackspace после развертывания Railscasts 335 в vps. Nginx, Unicorn, rbenv и Capistrano.Не удалось найти rake-10.0.3 в любом из источников

Затем, когда я пытаюсь установить второй сайт рельсов, я получаю сообщение об ошибке «Не удалось найти rake-10.0.3 в любом из источников» во время cap: deploy. cap: setup и cap: проверка прошла успешно. Кроме того, в моей папке приложения нет текущей директории.

Если я записал компакт-диск в каталог выпусков и запустил установку пакета, используйте rake-10.0.3. Единственное различие между этими двумя приложениями заключается в том, что новое приложение, которое я пытаюсь установить, использует конвейер активов.

Вот мой файл развертывания, который идентичен для обоих приложений, за исключением директивы set: application.

set :user, 'mark' 
set :scm_passphrase, 'xxxx' 
set :domain, '99.99.99.99' 
set :application, "my_app" 

set :repository, "#{user}@#{domain}:git/#{application}.git" 

ssh_options[:forward_agent] = true 

set :deploy_to, "/var/www/#{application}" 

role :app, domain 
role :web, domain 
role :db, domain, :primary => true 

default_run_options[:pty] = true 

set :deploy_via, :remote_cache 

set :scm, 'git' 
set :branch, 'master' 
set :scm_verbose, true 
set :use_sudo, false 

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 "/etc/init.d/unicorn_#{application} #{command}" 
    end 
    end 

    task :setup_config, roles: :app do 
    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.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 
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
    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 
+0

я наконец установил это, устанавливая рельсы и другой драгоценный камень к системе из моей домашней директории, используя Sudo. Очень странно, поскольку первая заявка не требовала этого. Запуск установки пакета сказал, что все они уже используются. Затем не удалось запустить /etc/init.d/unicorn_myapp. Я попытался запустить его вручную, но ошибка утверждала, что он не существует – markhorrocks

+0

Во-первых, capistrano не смог завершить, так как он не мог найти никаких драгоценных камней. Это несмотря на то, что приложение работает отлично. Итак, я установил драгоценные камни как системные драгоценные камни. Кажется, что Bundle использует их вместо того, чтобы устанавливать собственные драгоценные камни. Теперь единорог не существует после запуска unicorn_rails -c/var/www/my_app/config/unicorn.rb -D – markhorrocks

+0

'initialize ': адрес уже используется - /tmp/.sock (Errno :: EADDRINUSE) – markhorrocks

ответ

19

Удалить все версии Rake ==>gem uninstall rake
Удалить Gemfile.lock ==>rm Gemfile.lock
Run расслоением установить ==>bundle install

gem install rake --version=10.0.2 

, если вы все еще получаете ошибку, то поставить это в ваш gemfile.

gem 'rake', '0.8.7' 
+2

Если кто-то приходит на эту страницу с той же проблемой, что и я. Если вы развертываете приложение rails с помощью capistrano 3, вы должны добавить 'require 'capistrano/rails'' в начало Capfile. –

+1

Я развертываю приложение для рельсов. Я добавил 'require 'capistrano/rails'' в начало Capfile и попробовал еще раз. Такая же ошибка. Поэтому я не знаю, является ли это решением. По какой-то причине он требует рейка на системном уровне, а не в папке поставщика/bin. –

8
bundle update rake 

работал для меня. У меня была схожая проблема.

4

Если ваш еще ищет исправление ... Для меня это был вопрос об использовании sudo bundle install, а не только bundle install.

+0

Это сработало. Может ли кто-нибудь сказать мне, почему это происходит? Это похоже на то, что ОС хранит параллельные жемчужины. – nurinur

2

У меня было такое же загадочное сообщение об ошибке .... оказалось, что я создал клонированную версию внутри папки выпуска, из-за которой звездочки хотят что-то делать ... Я думаю, что cap использует дату создания как он перемещается по дереву релиза, так что это все испортило .... убедитесь, что в папке/release/папки нет дополнительных «ручных» папок, и вы должны пройти мимо этой ошибки

1

У меня была такая же проблема. Причиной моей проблемы было то, что Rake также был найден в /usr/bin/local/ в дополнение к тому, чтобы быть в каталоге прокладок в rbenv. Чтобы проверить, если это проблема, сначала удалите грабли gem uninstall rake, затем запустите which rake. Если вы вернете путь, отличный от /Users/username/.rbenv/shims/rake, тогда просто удалите этот двоичный код с помощью sudo rm /path/to/file.

Обратите внимание, что в моем случае, как минимум, which gem использовал сшитый исполняемый файл, которым управлял rbenv, в то время как рейк не был. Так что все работало, пока я не попытался вызвать rake command с терминала.

Также см: After installing rbenv and changing Ruby version, Rake no longer runs

Смежные вопросы