16

在将 Railscasts 335 部署到 vps 之后,我在 Rackspace 上的 Ubuntu 12.04 服务器上成功安装了 Rails (3.2.10) 应用程序。Nginx、独角兽、rbenv 和 Capistrano。

然后,当我尝试安装第二个 rails 网站时,我在 cap:deploy 期间收到错误“在任何源中都找不到 rake-10.0.3”。cap:setup 和 cap:check 成功。此外,我的应用程序文件夹下没有当前目录。

如果我 cd 进入发布目录并运行 bundle install 它使用的是 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
4

6 回答 6

21

删除所有版本的 Rake ==>gem uninstall rake
删除 Gemfile.lock ==>rm Gemfile.lock
运行 bundle install ==>bundle install

gem install rake --version=10.0.2

如果您仍然收到错误,请将其放入您的 gemfile 中。

gem 'rake', '0.8.7'
于 2013-01-23T17:47:37.467 回答
7
bundle update rake

为我工作。我有类似的问题。

于 2013-01-08T23:02:53.877 回答
4

如果您仍在寻找解决方案...对我来说,这是使用sudo bundle install而不是仅使用bundle install.

于 2013-01-25T21:46:59.910 回答
2

我有同样神秘的错误消息....原来我在发布文件夹中创建了一个“克隆”发布,这导致 sprockets 想要在那里做事....我认为 cap 在遍历发布时使用创建日期树所以不知何故这把事情搞砸了....确保你的 /releases/ 文件夹中没有额外的“手工制作”文件夹,你应该克服这个错误

于 2013-03-05T22:00:25.283 回答
1

我有同样的问题。/usr/bin/local/我的问题的原因是除了在 r​​benv 的 shims 目录中之外,还发现了 Rake 。要检查这是否是问题首先卸载 rakegem uninstall rake然后运行which rake。如果您返回的路径与此路径不同,/Users/username/.rbenv/shims/rake则只需使用sudo rm /path/to/file.

请注意,至少在我的情况下,which gem使用的是由 rbenv 管理的 shimed 可执行文件,而 rake 不是。所以一切正常,直到我尝试rake command从终端调用。

另请参阅:安装 rbenv 并更改 Ruby 版本后,Rake 不再运行

于 2014-01-10T01:09:24.980 回答
0

对于 4.3 的 rails 版本,让我们尝试使用bundle exec rails app:update. 它对我有用。

希望它对你有用。

于 2018-03-19T08:18:54.030 回答