2011-10-16 28 views
15

Tôi đang cố triển khai ứng dụng Rails 3.1 lần đầu tiên trên Heroku. Tôi đặt nó vào ngăn xếp Cedar, loại bỏ các viên ngọc sqlite3 nhưng khi tôi đẩy mã để Heroku tôi nhận được lỗi này:Heroku đang cố gắng cài đặt đá quý sqlite3 ngay cả khi nó không nằm trong Gemfile

-----> Installing dependencies using Bundler version 1.1.rc Running: bundle install --without development:test --path vendor/bundle --deployment Fetching gem metadata from http://rubygems.org/ ....... (...)

Installing rails (3.1.0) Installing sqlite3 (1.3.4) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks! /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/local/bin/ruby extconf.rb checking for sqlite3.h... no

Tôi không biết lý do tại sao bó cài đặt đang cố gắng để cài đặt sqlite3. Hãy nhìn vào tôi Gemfile và Gemfile.lock:

Gemfile

source 'http://rubygems.org' 

gem 'rails', '3.1.0' 

gem 'json' 
gem 'pg' 
gem 'thin' 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
# gem 'sass-rails', " ~> 3.1.0" 
# gem 'coffee-rails', "~> 3.1.0" 
    gem 'uglifier' 
end 

gem 'jquery-rails' 

Gemfile.lock

GEM remote: http://rubygems.org/ specs: 
    actionmailer (3.1.0) 
     actionpack (= 3.1.0) 
     mail (~> 2.3.0) 
    actionpack (3.1.0) 
     activemodel (= 3.1.0) 
     activesupport (= 3.1.0) 
     builder (~> 3.0.0) 
     erubis (~> 2.7.0) 
     i18n (~> 0.6) 
     rack (~> 1.3.2) 
     rack-cache (~> 1.0.3) 
     rack-mount (~> 0.8.2) 
     rack-test (~> 0.6.1) 
     sprockets (~> 2.0.0) 
    activemodel (3.1.0) 
     activesupport (= 3.1.0) 
     bcrypt-ruby (~> 3.0.0) 
     builder (~> 3.0.0) 
     i18n (~> 0.6) 
    activerecord (3.1.0) 
     activemodel (= 3.1.0) 
     activesupport (= 3.1.0) 
     arel (~> 2.2.1) 
     tzinfo (~> 0.3.29) 
    activeresource (3.1.0) 
     activemodel (= 3.1.0) 
     activesupport (= 3.1.0) 
    activesupport (3.1.0) 
     multi_json (~> 1.0) 
    arel (2.2.1) 
    bcrypt-ruby (3.0.1) 
    builder (3.0.0) 
    daemons (1.1.4) 
    erubis (2.7.0) 
    eventmachine (0.12.10) 
    execjs (1.2.9) 
     multi_json (~> 1.0) 
    hike (1.2.1) 
    i18n (0.6.0) 
    jquery-rails (1.0.14) 
     railties (~> 3.0) 
     thor (~> 0.14) 
    json (1.6.1) 
    mail (2.3.0) 
     i18n (>= 0.4.0) 
     mime-types (~> 1.16) 
     treetop (~> 1.4.8) 
    mime-types (1.16) 
    multi_json (1.0.3) 
    pg (0.11.0) 
    polyglot (0.3.2) 
    rack (1.3.3) 
    rack-cache (1.0.3) 
     rack (>= 0.4) 
    rack-mount (0.8.3) 
     rack (>= 1.0.0) 
    rack-ssl (1.3.2) 
     rack 
    rack-test (0.6.1) 
     rack (>= 1.0) 
    rails (3.1.0) 
     actionmailer (= 3.1.0) 
     actionpack (= 3.1.0) 
     activerecord (= 3.1.0) 
     activeresource (= 3.1.0) 
     activesupport (= 3.1.0) 
     bundler (~> 1.0) 
     railties (= 3.1.0) 
    railties (3.1.0) 
     actionpack (= 3.1.0) 
     activesupport (= 3.1.0) 
     rack-ssl (~> 1.3.2) 
     rake (>= 0.8.7) 
     rdoc (~> 3.4) 
     thor (~> 0.14.6) 
    rake (0.9.2) 
    rdoc (3.9.4) 
    sprockets (2.0.0) 
     hike (~> 1.2) 
     rack (~> 1.0) 
     tilt (~> 1.1, != 1.3.0) 
    thin (1.2.11) 
     daemons (>= 1.0.9) 
     eventmachine (>= 0.12.6) 
     rack (>= 1.0.0) 
    thor (0.14.6) 
    tilt (1.3.3) 
    treetop (1.4.10) 
     polyglot 
     polyglot (>= 0.3.1) 
    tzinfo (0.3.29) 
    uglifier (1.0.3) 
     execjs (>= 0.3.0) 
     multi_json (>= 1.0.2) 

PLATFORMS ruby 

DEPENDENCIES jquery-rails json pg rails (= 3.1.0) thin uglifier 

Làm thế nào tôi có thể sửa chữa nó?

+1

Vì vậy, người thông minh đã bỏ phiếu có thể giải thích lý do tại sao? –

+0

Tôi đang gặp vấn đề tương tự, tôi sử dụng 'pg' cục bộ mà không gặp vấn đề gì nhưng Heroku vẫn đang cố gắng cài đặt sqlite và do đó gây lỗi. Tuy nhiên, tôi có thể thấy rằng tôi có những điều sau đây trong gemfile.lock của tôi: 'sqlite3 (1.3.4) sqlite3-ruby (1.3.3) sqlite3 (> = 1.3.3)'. Đây rõ ràng là những gì đang gây ra vấn đề nhưng tôi không thể làm việc tại sao họ vẫn đang thực hiện theo cách của họ vào gemfile.lock của tôi; không có vấn đề bao nhiêu lần tôi làm 'bó cập nhật' hoặc xóa các tập tin khóa và bắt đầu từ đầu. Bất kỳ đề xuất? – Pete

+3

Tôi đã cố định mỏ bằng cách loại bỏ đá quý 'taps' khỏi Gemfile của tôi. Quên tôi không cần nó trong Gemfile thực, chỉ trong gemset của tôi để sử dụng nó. Loại bỏ 'taps' đã loại bỏ các phụ thuộc sqlite trong Gemfile.lock của tôi. – Pete

Trả lời

1

thử xóa Gemfile.lock và chạy Bundle Cài đặt, cam kết và đẩy

+0

Không. Không làm việc. –

+0

bạn có đang sử dụng các cửa sổ để phát triển không? – jtomasrl

+0

Không. Tôi đang ở trên Mac OS X –

3

Tôi đã cùng một vấn đề và giải pháp zoltarSpeaks' cố định nó cho tôi. Tôi đã có đá quý vòi được cài đặt sau khi đọc bài viết này chỉ ra nó sẽ là cần thiết để đẩy từ một sqlite3 địa phương để postgresql sản xuất: http://batsov.com/articles/2011/10/30/deploying-rails31-apps-on-celadon-cedar/. Hóa ra tôi không cần đá quý sau khi tất cả, nhưng nó rõ ràng là vấn đề. Đã xóa tham chiếu, cập nhật gói, tất cả các hệ thống đều hoạt động.

31

Khi tôi gặp sự cố, hóa ra tôi đã quên cam kết thay đổi của mình sau bundle install. Doh! git status nên cho biết các thay đổi chưa được ghi lại cho các tệp gem.

+4

ồ người đàn ông, tôi đã làm điều tương tự .. điều này đã cứu tôi khỏi bị điên! cảm ơn :) – absolutskyy

+0

bạn sir là khôn ngoan, ty. –

+0

vẫn không hoạt động ở đây ... –

0

giải pháp đơn giản mà không cần gỡ bỏ cài đặt sqlite3 đá quý cho Heroku:

Thêm vào Gemfile:

group :production do 
gem 'pg', '0.17.1' #or version of pg you want 
gem 'rails_12factor', '0.0.2' #Heroku static assets for image and css 

Kiểm tra, bạn có:

end 
end 

ở phần cuối của mã trong Gemfile

so với Lưu Gemfile và chạy gói cài đặt

$ bundle install --without production 

hơn cam kết

$ git commit -a -m "Update Gemfile.lock for Heroku" 

hơn

$ git push heroku master 

Đó là tất cả. Bạn sẽ chỉ nhận được một vài cảnh báo mà chỉ đơn giản là để sửa chữa.

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