【问题标题】:Could not find rake-10.0.3 in any of the sources在任何来源中都找不到 rake-10.0.3
【发布时间】:2012-12-19 15:22:11
【问题描述】:

在 Railscasts 335 部署到 vps 之后,我在 Rackspace 上的 Ubuntu 12.04 服务器上成功安装了 Rails (3.2.10) 应用程序。 Nginx、Unicorn、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

【问题讨论】:

  • 我终于通过使用 sudo 从我的主目录将 rails 和其他 gem 安装到系统来解决这个问题。很奇怪,因为第一个应用程序不需要这个。运行 bundle install 说所有都已经被使用了。接下来它无法启动 /etc/init.d/unicorn_myapp。我试图手动启动它,但一个错误声称它不存在
  • 首先,capistrano 无法完成,因为它找不到任何宝石。尽管另一个应用程序运行良好,但仍然如此。因此,我将 gem 安装为系统 gem。 Bundle 似乎想使用这些而不是安装自己的 gem。现在运行 unicorn_rails -c /var/www/my_app/config/unicorn.rb -D 后独角兽不存在了
  • `initialize': 地址已经在使用 - /tmp/.sock (Errno::EADDRINUSE)
  • 我的两个应用程序在 unicorn.rb 中都有这一行:listen "/tmp/.sock", :backlog => 64 这是除了 listen "/tmp/unicorn.my_app. sock”,这两个应用程序都不同。
  • 看来您用于socket 文件的名称与您的应用程序相同。您可以尝试更改其中一个并重新启动 nginx 。 socket 文件的命名位于 nginx.conf' file in config` 目录的 server 部分。更新后,您应该重新部署它以允许 capistrano 重新链接新形成的值。

标签: ruby-on-rails rake capistrano


【解决方案1】:

对于从 4.3 开始的 rails 版本,请尝试使用 bundle exec rails app:update。它对我有用。

希望对你有用。

【讨论】:

    【解决方案2】:

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

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

    另见:After installing rbenv and changing Ruby version, Rake no longer runs

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 这行得通。谁能告诉我为什么会这样?这就像操作系统保持并行的 gem 包..
        【解决方案5】:

        删除所有版本的 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'
        

        【讨论】:

        • 如果有人来到这个页面,遇到和我一样的问题。如果您使用 capistrano 3 部署 Rails 应用程序,您应该在 Capfile 的顶部添加 require 'capistrano/rails'
        • 我正在部署一个 Rails 应用程序。我在 Capfile 的顶部添加了require 'capistrano/rails' 并再次尝试。同样的错误。所以我不知道这是否是一个解决方案。出于某种原因,它需要在系统级别进行 rake,而不是在 vendor/bin 文件夹中。
        【解决方案6】:
        bundle update rake
        

        为我工作。我也遇到过类似的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-25
          • 2017-07-18
          • 2012-07-22
          • 2011-11-28
          • 2019-12-17
          • 1970-01-01
          • 2014-03-02
          • 2017-01-13
          相关资源
          最近更新 更多