복붙노트

[RUBY-ON-RAILS] Heroku가 배포 때문에 sqlite3를 보석 오류로 실패

RUBY-ON-RAILS

Heroku가 배포 때문에 sqlite3를 보석 오류로 실패

난 그냥 마이클 하틀로 ruby.railstutorial.org 책을 시작하고 첫 번째 챕터를 통해 일하고있다. 나는 맥 책 OS X, 터미널, 그리고 숭고한 텍스트를 사용하고 있습니다. 그에게 Heroku에 테스트 배포에 시간이 될 때까지 모든 것이 계획에 따라 최대왔다. 나는 Heroku가에 연결하고 $ 자식 푸시 Heroku가 마스터의 명령을 실행 할 수 있어요. 그러나 배포 실패

Installing sqlite3 (1.3.5) with native extensions
       Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
       /usr/local/bin/ruby extconf.rb
       checking for sqlite3.h... no
       sqlite3.h is missing. Try 'port install sqlite3 +universal'
       or 'yum install sqlite-devel' and check your shared library search path (the
       location where your sqlite3 shared library is located).
       *** extconf.rb failed ***
       Could not create Makefile due to some reason, probably lack of
       necessary libraries and/or headers.  Check the mkmf.log file for more
       details.  You may need configuration options.
       Provided configuration options:


An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue.
       Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !     
 !     Detected sqlite3 gem which is not supported on Heroku.
 !     http://devcenter.heroku.com/articles/how-do-i-use-sqlite3-for-development
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

여기 내 Gemfile입니다

source 'https://rubygems.org'

       gem 'rails', '3.2.8'

       # Bundle edge Rails instead:
       # gem 'rails', :git => 'git://github.com/rails/rails.git'

       group :development, :test do
   gem 'sqlite3', '1.3.5'
       end


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

       # See https://github.com/sstephenson/execjs#readme for more supported runtimes
       # gem 'therubyracer', :platforms => :ruby

       gem 'uglifier', '>= 1.2.3'
       end

       gem 'jquery-rails', '2.0.2'

       group :production do
   gem 'pg', '0.12.2'
       end

       # To use ActiveModel has_secure_password
       # gem 'bcrypt-ruby', '~> 3.0.0'

       # To use Jbuilder templates for JSON
       # gem 'jbuilder'

       # Use unicorn as the app server
       # gem 'unicorn'

       # Deploy with Capistrano
       # gem 'capistrano'

       # To use debugger
       # gem 'debugger'

내가 Heroku가 그냥 모두 함께 무시 것이라고 생각, 그래서 내가 sqlite3를 개발하지 생산을 위해 지정했지만, 그 사건이 될 것 같습니다하지 않습니다.

내가 번들을 만들 때 또한, 내가 사용하고     $ 번들은 --without 제작 설치

나는 어떤 사람들은 PG를 설치하고 그 사용을 제안했다 것을 알고,하지만 난 정말 모험과 다른 접근 방식을 시도하기 전에, 가능한 한 튜토리얼에 충실하고자합니다.

나는 순간에 잃은 비트입니다, 그리고 확인하는 방법을 여기에서 진행. 당신이 제공 할 수있는 어떤 도움을 가장 극명하게 될 것이다.

감사

해결법

  1. ==============================

    1.Heroku가이 어떤 이유에 대한 sqlite3를 보석을 설치할 수 없습니다. 하지만 당신은 그것을 개발하는 경우를 제외하고 시도되어서는 안된다는 들러 알 수 있습니다.

    Heroku가이 어떤 이유에 대한 sqlite3를 보석을 설치할 수 없습니다. 하지만 당신은 그것을 개발하는 경우를 제외하고 시도되어서는 안된다는 들러 알 수 있습니다.

    당신의 Gemfile에 보석 'sqlite3를'을 교체 :

    group :development, :test do
      gem 'sqlite3'
    end
    group :production do
      gem 'pg'
    end
    

    Heroku가에 들러 그 후, 생산으로 실행, 그것을 설치하려고하지 않을 것이다.

  2. ==============================

    2.드디어 Heroku가 성공적으로 구축 할 수 있었다. Heroku가 사이트에 대한 기사에 저를 가리키는위한 evanc3 감사합니다. 단순히에게 Heroku에 배포하기 전에 내 Gemgile 업데이트를 저지하는 것을 잊었다 나타납니다. 당신의 모든 막 시작 그래서, 당신은 당신이에게 Heroku에 배포하기 전에 변경 사항을 적용 할 필요가있다.

    드디어 Heroku가 성공적으로 구축 할 수 있었다. Heroku가 사이트에 대한 기사에 저를 가리키는위한 evanc3 감사합니다. 단순히에게 Heroku에 배포하기 전에 내 Gemgile 업데이트를 저지하는 것을 잊었다 나타납니다. 당신의 모든 막 시작 그래서, 당신은 당신이에게 Heroku에 배포하기 전에 변경 사항을 적용 할 필요가있다.

  3. ==============================

    3.Heroku가이 sqlite3를 지원하지 않습니다 ...

    Heroku가이 sqlite3를 지원하지 않습니다 ...

    대신 Gemfile를 사용 PG 보석에서 sqlite3를 제거합니다. 보석 파일의 변경 다음을 수행

    당신의 Gemfile의 변화에 ​​따라

    gem 'sqlite3'
    

    gem 'pg' #you will have to install postgresql
    

    중요 : 실행

    git add .
    git commit 
    git push heroku master
    

    참고 : Heroku가에 대한 배포 할 계획이라면, 나는 Heroku가이 psql의 선호 (컴퓨터의 PostgreSQL의 설치) 또한 개발 단계에서 포스트 그레스를 사용하는 것이 좋습니다 좋습니다.

    당신은 설정 다음 Heroku가 사용에 대한 개발과 PostgreSQL을위한 SQLite는 사용합니다.

    group :development do 
       gem 'sqlite3'    #gem to use in development environment
    end
    
    group :production do 
      gem 'pg'         #gem to use in production environment
    end
    

    Heroku가 생산 환경에서 응용 프로그램을 실행하기 때문에 Heroku가이 페이지 보석을 사용합니다

  4. ==============================

    4.Heroku가에서 앱 파일 시스템에 액세스 할 수 없습니다. 그것 때문에 당신이 (즉, 한 번에 여러 서버를 실행) 새로운 인스턴스를 추가하여 앱의 성능을 확장 할 수 있다는 사실을 기본적으로, 그리고 이러한 인스턴스는 동일한 물리적 시스템에있을 보장되지 않습니다 - -이 이것에 대한 이유가있어 복사 전역 파일은 매우 느릴 것입니다.

    Heroku가에서 앱 파일 시스템에 액세스 할 수 없습니다. 그것 때문에 당신이 (즉, 한 번에 여러 서버를 실행) 새로운 인스턴스를 추가하여 앱의 성능을 확장 할 수 있다는 사실을 기본적으로, 그리고 이러한 인스턴스는 동일한 물리적 시스템에있을 보장되지 않습니다 - -이 이것에 대한 이유가있어 복사 전역 파일은 매우 느릴 것입니다.

    SQLite는 그냥 Heroku가와 호환되지 않는 이유 당신의 dB / 폴더에있는 파일로 데이터베이스를 저장합니다.

    이 SQLite는과 PostgreSQL (선택의 Heroku가 데이터베이스) 사이에 때때로 미묘한 비 호환성은 당신이 프로덕션에 배포하기 전에이 밖으로을 찾으려하기 때문에 최선의 선택은, 도움말 링크에 제안, SQLite는 멀리 이동하는 것입니다!

    당신은 PostgreSQL을 설치 한 후 (정확히 수행하는 방법이 당신의 OS에 따라 다름) 다음 Gemfile에 보석 '페이지'를 추가합니다.

  5. ==============================

    5.나는 당신이 당신의 gemfile에 직접 sqlite3를이없는 경우에 대한 해결책을 가지고 있고 당신은 여전히이 오류가 있어요.

    나는 당신이 당신의 gemfile에 직접 sqlite3를이없는 경우에 대한 해결책을 가지고 있고 당신은 여전히이 오류가 있어요.

    대부분의 경우, 당신은 사용이 종속성으로 sqlite3를하는 보석을 가지고 있고 그것은 당신이 알고없이 보석을 포함합니다.

    1) Gemfile.lock로 이동하여 sqlite가에 대한 검색을한다.

    2)를 개발 또는 테스트 그룹으로 이동 일품 sqlite가 사용되는 보석 찾아.

    3) 번들

  6. from https://stackoverflow.com/questions/13083399/heroku-deployment-failed-because-of-sqlite3-gem-error by cc-by-sa and MIT license