2012-10-26 23 views
14

की वजह से हेरोकू परिनियोजन विफल रहा है मैंने अभी माइकल हार्टल द्वारा ruby.railstutorial.org पुस्तक शुरू की है और पहले अध्याय के माध्यम से काम कर रहे हैं। मैं मैक बुक ओएस एक्स, टर्मिनल और सब्लिमे टेक्स्ट का उपयोग कर रहा हूं। योजना के अनुसार सबकुछ चला गया है, जब तक कि यह हरोकू में तैनाती का परीक्षण करने का समय न हो। मैं हेरोोक से कनेक्ट करने और $ git push heroku मास्टर कमांड चलाने में सक्षम हूं। लेकिन तैनाती विफल रहता है:sqlite3 मणि त्रुटि

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' 

मैं विकास के लिए और नहीं उत्पादन नामित sqlite3 है, इसलिए मैंने सोचा Heroku सिर्फ यह सब एक साथ उपेक्षा है, लेकिन है कि प्रतीत नहीं होता है मामला बनो

इसके अलावा

, जब मैं --without उत्पादन

मुझे पता है कि कुछ लोगों को सिर्फ पीजी स्थापित करने और उपयोग करने के लिए सुझाव दिया है स्थापित बंडल मैं $ बंडल का उपयोग कर रहा बनाने के लिए, लेकिन मैं वास्तव में ट्यूटोरियल का पालन करना चाहते हैं जितना संभव हो सके, इससे पहले कि मैं बाहर निकलूं और एक अलग दृष्टिकोण का प्रयास करें।

मैं इस समय थोड़ा सा खो गया हूं, और यह सुनिश्चित नहीं करता कि यहां से कैसे आगे बढ़ना है। कोई भी सहायता जो आप प्रदान कर सकते हैं उसकी सराहना की जाएगी।

धन्यवाद

+0

वाह, यह मदद लिंक एक बहुत अधिक बेकार की तुलना में जब मैं इस समस्या को मारा ... – Chowlett

+1

लिंक की सलाह का पालन और इसके बजाय PostgreSQL का उपयोग है। – sevenseacat

+1

इस अनुभाग को जांचें https://devcenter.heroku.com/articles/building-a-rails-3- एप्लिकेशन-with-the-memcache-addon#create-your-plication – fankt

उत्तर

21

Heroku sqlite3 मणि, जो भी कारण के लिए स्थापित नहीं कर सकता। लेकिन आप bundler बता सकते हैं कि इसे विकसित करने के अलावा इसे छोड़ने की कोशिश नहीं की जानी चाहिए।

अपने Gemfile में, की जगह gem 'sqlite3' साथ:

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

फिर Heroku पर बंडलर, production रूप में चल रहा है, यह स्थापित करने का प्रयास नहीं करेंगे।

+3

मैंने कोड के साथ जेमफाइल अपडेट किया, और बंडल और हेरोकू में तैनात किया लेकिन मुझे अभी भी एक ही त्रुटि मिल रही है। – xuamox

+0

स्क्लाइट 3 का मणि इंस्टॉल सफल था, जैसा उत्पादन के बिना बंडल था, और अभी भी कोई भाग्य – xuamox

+0

मुझे मूर्खतापूर्ण, मैं 'पीजी' मणि को प्रतिस्थापन के रूप में जोड़ना भूल गया। अभी के बारे में कैसे? – Chowlett

1

हेरोकू पर, आपके ऐप में फाइल सिस्टम तक पहुंच नहीं है। इसके लिए कई कारण हैं - यह मूल रूप से इस तथ्य के कारण है कि आप नए उदाहरण जोड़कर अपने ऐप के प्रदर्शन को स्केल कर सकते हैं (यानी एक साथ कई सर्वर चला रहे हैं), और इन उदाहरणों को एक ही भौतिक मशीन पर होने की गारंटी नहीं है - प्रतिलिपि बनाना फाइलें बहुत धीमी होंगी।

SQLite बस डेटाबेस को आपके डीबी/फ़ोल्डर में फ़ाइल में संग्रहीत करता है, यही कारण है कि यह हेरोकू के साथ असंगत है।

सबसे अच्छा विकल्प, के रूप में मदद की कड़ी में सुझाव दिया,, SQLite से दूर स्थानांतरित करने क्योंकि वहाँ SQLite और PostgreSQL (पसंद के Heroku के डाटाबेस) के बीच कभी कभी सूक्ष्म असंगतियां हो रहा है और आप इससे पहले कि आप को तैनात इस पता लगाना चाहते हैं उत्पादन के लिए!

पोस्टग्रेएसक्यूएल स्थापित करने के बाद (वास्तव में यह कैसे करें अपने ओएस पर निर्भर करता है) और फिर gem 'pg' को अपने जेमफाइल में जोड़ें।

13

मैं अंततः हरोकू में सफलतापूर्वक तैनात करने में सक्षम था। Heroku साइट पर एक लेख को इंगित करने के लिए evanc3 के लिए धन्यवाद। ऐसा लगता है कि मैं हेरोोकू पर तैनात करने से पहले बस अपने Gemgile अद्यतनों को भूलना भूल गया। तो आप सभी के लिए अभी शुरू करना है, आपको यह सुनिश्चित करना होगा कि आप हेरोोकू पर तैनात करने से पहले अपने बदलाव करें।

+0

धन्यवाद! आपने मेरी मदद भी की। – YoTengoUnLCD

+0

यहां "धन्यवाद!" है "मैं भी!" टिप्पणी करें ताकि यह सहायक पोस्ट लॉक हो जाए! – gangelo

8

Heroku sqlite3 का समर्थन नहीं करते ... अपने Gemfile, उपयोग स्नातकोत्तर बजाय मणि से

निकालें sqlite3।मणि फ़ाइल में निम्न परिवर्तन है

परिवर्तन में अपनी Gemfile

gem 'sqlite3' 

gem 'pg' #you will have to install postgresql 

महत्वपूर्ण के लिए निम्न: भागो

git add . 
git commit 
git push heroku master 

नोट: यदि आप Heroku के लिए तैनात करने की योजना बना रहे हैं , मेरा सुझाव है कि आपके विकास चरण में पोस्टग्रेस का उपयोग करना बेहतर है (इंस्टॉल करें postgresql आपके कंप्यूटर में), heroku psql पसंद करते हैं।

यदि आप हेरोकू के लिए विकास और पोस्टग्रेस्क्ल के लिए स्क्लेइट का उपयोग करना चाहते हैं, तो निम्न कॉन्फ़िगरेशन का उपयोग करें।

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 उत्पादन वातावरण

+0

गिट जोड़ने और प्रतिबद्ध करने के लिए वास्तव में मेरे लिए चाल है! धन्यवाद। मैंने सभी भागों को जोड़ा था, लेकिन उन्हें प्रतिबद्ध नहीं किया था। –

0

में आपके आवेदन को चलाने मैं अगर आप अपने gemfile में सीधे sqlite3 की जरूरत नहीं है के लिए एक समाधान है और आप अभी भी इस त्रुटि हो रही है pg मणि का प्रयोग करेंगे।

सबसे अधिक संभावना है कि आपके पास एक मणि है जो एसक्लाइट 3 को निर्भरता के रूप में उपयोग करता है और इसमें आपको बिना मणि शामिल है।

1) Gemfile.lock पर जाएं और स्क्लाइट के लिए एक खोज करें।

2) पता लगाएं कि कौन सा मणि स्क्लाइट का उपयोग कर रहा है, फिर मणि को विकास या परीक्षण समूह में ले जाएं।

3) बंडल