Heroku

2011-11-21 14 views
5

पर JRuby Rails 3.1.x को कैसे तैनात करें मैं Heroku में एक jruby रेल 3.1 ऐप को प्रतिबिंबित करने में सक्षम होना चाहता हूं।Heroku

हेरोकू अब जावा का समर्थन करता है: http://blog.heroku.com/archives/2011/08/25/java/ माना जाता है कि, एक जेआरबी रेल आवेदन को तैनात करना संभव होना चाहिए। वहाँ एक ट्यूटोरियल यहाँ सादे जावा के लिए है: http://devcenter.heroku.com/articles/java और एक अन्य यहाँ: http://devcenter.heroku.com/articles/spring-mvc-hibernate

यहाँ Heroku पर एक JRuby सिनात्रा अनुप्रयोग के लिए एक ट्यूटोरियल है: http://chris.chowie.net/2011/08/28/Sinatra-with-JRuby-on-Heroku/ आदेश में इस काम करने के लिए पाने के लिए, मैं गैर JRuby रूबी का उपयोग किया था जब Heroku चल , अगर आरवीएम jruby का उपयोग करता है तो heroku दुर्घटनाग्रस्त हो जाता है।

आदेश आदेश

mvn package 

चलाने के लिए मैं इस चलाने के लिए किया था:

bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile install temple 
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile update 

मैं एप्लिकेशन बनाया:

heroku create jg1-sinatra --stack cedar 

मैं Heroku करने के लिए फ़ाइल धक्का दे दिया, लेकिन जब ऐप शुरू हुआ, तो यह दुर्घटनाग्रस्त हो गया। ? :(

किसी भी सलाह मैं Heroku से अनुमान लगा रहा है कि यह लंबे समय से पहले Heroku इस पर एक ट्यूटोरियल है नहीं होगा

लॉग फ़ाइल:।

2011-11-21T08:30:40+00:00 heroku[slugc]: Slug compilation started 
2011-11-21T08:31:17+00:00 heroku[api]: Deploy 3bccec5 by [email protected] 
2011-11-21T08:31:17+00:00 heroku[api]: Release v7 created by [email protected] 
2011-11-21T08:31:18+00:00 heroku[web.1]: State changed from crashed to created 
2011-11-21T08:31:18+00:00 heroku[slugc]: Slug compilation finished 
2011-11-21T08:31:20+00:00 heroku[web.1]: Starting process with command `sh script/jruby -S trinidad -p 17687` 
2011-11-21T08:31:20+00:00 app[web.1]: Classpath is: :/app/etc:/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar 
2011-11-21T08:31:20+00:00 app[web.1]: Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main 
2011-11-21T08:31:20+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: org.jruby.Main 
2011-11-21T08:31:20+00:00 app[web.1]: at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
2011-11-21T08:31:20+00:00 app[web.1]: at java.security.AccessController.doPrivileged(Native Method) 
2011-11-21T08:31:20+00:00 app[web.1]: at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
2011-11-21T08:31:20+00:00 app[web.1]: at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
2011-11-21T08:31:20+00:00 app[web.1]: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
2011-11-21T08:31:20+00:00 app[web.1]: at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
2011-11-21T08:31:20+00:00 app[web.1]: Could not find the main class: org.jruby.Main. Program will exit. 
2011-11-21T08:31:20+00:00 heroku[web.1]: Process exited 
2011-11-21T08:31:21+00:00 heroku[web.1]: State changed from starting to crashed 
+0

यह कहता है कि यह JRuby लाइब्रेरी नहीं ढूंढ सकता है। क्या आपने इसे अपने पैकेज में शामिल किया है? क्या पैकेज स्थानीय रूप से चलता है? –

उत्तर

2

आप इस लाइन है:

Classpath is: :/app/etc:/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar 

तेजी आप कहीं अपने स्थान के भंडार के संदर्भ में है और कोर्स की Heroku यह नहीं है। मैं पैकेजिंग के बारे में इतना पता नहीं है, लेकिन इस संदर्भ तरह दिखाई देती हैं यहाँ ?

चेक सभी रेफरी और पैकेजिंग विकल्प एक अच्छी शुरुआत हो सकता है देखते हैं ...

+0

@justingordon, क्या आपने इस उत्तर की कोशिश करने के बाद वास्तव में सफल प्रयास किया? आपकी प्रगति के बारे में जानना अच्छा होगा :) –

+0

heroku अब सीधे JRuby का समर्थन करता है ... – justingordon

0

हो रही JRuby और Heroku पर अन्य गैर समर्थित runtimes अब तीसरे पक्ष के buildpacks की उपलब्धता के साथ अप्रचलित हैं के लिए पिछला हैक्स:

https://devcenter.heroku.com/articles/buildpacks https://github.com/jruby/heroku-buildpack-jruby

4

Bundler 1.2 के रूप में आप अब सक्षम specify the Ruby implementation and version करने के लिए अपने Gemfile में हैं। इसके बारे में अच्छी बात यह है कि हेरोोकू इन सेटिंग्स को समझ लेगा और आपके पर्यावरण के लिए अपना हेरोोकू एप्लीकेशन तैयार करेगा।

उदाहरण के लिए इस Gemfile लें:

source "https://rubygems.org" 

ruby "1.9.3" 

gem "rails" 
gem "puma" 

क्या इस के बारे में अच्छी बात यह है कि डिफ़ॉल्ट रूप से Celadon देवदार रूबी 1.9.2 का उपयोग करता है। हालांकि, जब आप Gemfile में निर्दिष्ट करते हैं तो यह वास्तव में आपके हेरोोकू पर्यावरण के लिए रूबी 1.9.3 संकलित करेगा।

अब, आप अपने Heroku पर्यावरण के लिए एक अलग रूबी कार्यान्वयन जोड़ना चाहते हैं, तो आप ऐसा इस तरह कर सकते हैं:

source "https://rubygems.org" 

ruby "1.9.3", :engine => "jruby", :engine_version => "1.7.0.preview1" 

gem "rails" 
gem "puma" 

अब यह स्थापित करने और रूबी 1.9 में JRuby 1.7.0.preview1 इस्तेमाल करेंगे तैनाती पर आपके Heroku आवेदन के लिए मोड। यह Heroku पर्यावरण चर में उचित JVM विकल्प भी परिभाषित करेगा।

सबसे अच्छा यह है कि यह आधिकारिक Heroku buildpack के साथ आता है, इसलिए Heroku पर JRuby/JVM जाने के लिए किसी तृतीय पक्ष buildpack पर स्विच करने की आवश्यकता नहीं है। हालांकि मुझे अभी तक काम करने के लिए यह नहीं मिला है, यह should also work with Rubinius है, लेकिन मेरा मानना ​​है कि यह वर्तमान में खराब है। या तो, या मैं इसे गलत कर रहा हूँ।

यह मेरी राय में एक अद्भुत और स्केलेबल सुविधा है। बस अपनी जेमफाइल में अपनी अन्य निर्भरताओं के साथ रूबी कार्यान्वयन/संस्करण/मोड का उपयोग कर रहे हैं और हेरोोकू सुनिश्चित करेगा कि पर्यावरण तैयार हो।