2012-04-20 54 views
9

Tôi có một ứng dụng Rails đơn giản mà tôi muốn triển khai cho Heroku. Khi tôi chạy lệnh dưới đâyTại sao tôi nhận được Không thể tìm thấy multi_json-1.3.1 trong bất kỳ nguồn nào?

git push heroku master 

Thông báo lỗi dưới đây được hiển thị.

Could not find multi_json-1.3.1 in any of the sources 
! 
! Failed to install gems via Bundler. 
! 
! Heroku push rejected, failed to compile Ruby/rails app 

Đây là Gemfile tôi

gem 'rails', '3.2.3' 
gem 'pg' 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'therubyracer', :platform => :ruby 
    gem 'uglifier', '>= 1.0.3' 
end 
gem 'jquery-rails' 

Trả lời

25

Xóa file Gemfile.lock, và chạy gói cài đặt. Điều này phù hợp với tôi!

+0

Bạn là chính xác.Chỉ cần bây giờ tôi đã giải quyết nó :) –

+0

đơn giản và làm việc;) – ghostrifle

+0

Ngoài ra, đừng quên thêm và cam kết các thay đổi đối với Gemfile.lock trước khi đẩy nó sau khi cài đặt gói. Điều này có vẻ hiển nhiên nhưng tôi quên làm điều đó và tất nhiên, lỗi là như nhau khi đẩy;) – Hezad

-1

Tôi đã giải quyết nó bằng các bước sau.

Removed Gemfile.lock 
bundle install 

Nguyên nhân của vấn đề là bước đầu của tôi Gemfile.lock đã multi_json-1.3.1

Bây giờ nó có phiên bản multi_json-1.3.2

0

Trong trường hợp của tôi, tôi đã thiếu

source 'https://rubygems.org' 

in Gemfile. Nghi ngờ của tôi là các phiên bản bundler cũ có thể hoạt động mà không có nguồn được đề cập, nhưng các phiên bản mới hơn thì không.

1

Tôi thấy một loạt các lỗi này cho các loại đá quý khác nhau mặc dù thực tế tôi biết những viên đá quý này đã có sẵn (ví dụ: gem list -r <gem> cho thấy chúng, bao gồm phiên bản; yanked vv) và tôi đã có một bộ nguồn (tôi thậm chí đặt 6 nguồn khác nhau để chắc chắn).

Vấn đề của tôi là tôi có git stashed trước khi rời khỏi một chi nhánh để kéo mới nhất về phát triển và quên bật quảng cáo sau đó, đó là vấn đề vì tôi đã thay đổi .rvmrc và không cam kết thay đổi (để sử dụng một ruby ​​mới hơn sản xuất của chúng tôi đã làm).

Bởi vì .rvmrc đã chỉ định một gemset cho dự án, stashing nó có nghĩa là tôi đột nhiên bị bó buộc với một viên đá quý bị thiếu một loạt đá quý trong số Gemfile.lock của tôi và vì lý do tôi không hiểu Bundler Gemfile.lock nó đã được cài đặt và nó không tìm kiếm nó từ xa.

Vì vậy, chỉ trong trường hợp bất kỳ ai khác phải đối mặt với trường hợp góc cực kỳ khó chịu này, tôi nghĩ tôi sẽ viết nó lên đây.

1

Nếu bạn đang sử dụng Capistrano để triển khai và bạn nhận được bí mật "Không thể tìm thấy multi_json-1.7.2 ở bất kỳ nguồn nào", đảm bảo bạn có require "bundler/capistrano" ở đầu số config/deploy.rb.

0

Đối với tôi điều này là do Pow (máy chủ rack nội bộ) không sử dụng đúng phiên bản ruby ​​ruby ​​/ gemset.

Cố định bằng cách thêm .powrc sau:

# based on https://coderwall.com/p/pkj39a 
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] && [ -f ".ruby-gemset" ]; then 
    source "$rvm_path/scripts/rvm" 
    rvm use `cat .ruby-version`@`cat .ruby-gemset` 
fi 

Nguồn: https://coderwall.com/p/pkj39a

Các vấn đề liên quan