2010-12-03 8 views
5

पर मेरे पास एक साधारण साइनरा ऐप है।सिनात्रा और रूबी के साथ मुद्दे 1.9.2 शॉटगन

require 'rubygems' 
require 'sinatra' 

get '/' do 
    "Hello" 
end 

जब मैं शॉटगन पर चला मैं निम्नलिखित त्रुटि मिलती है:

Boot Error

Something went wrong while loading simple.rb

LoadError: no such file to load -- simple.rb

:29:in require' <internal:lib/rubygems/custom_require>:29:in require' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/loader.rb:114:in inner_app' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/loader.rb:102:in assemble_app' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/loader.rb:86:in proceed_as_child' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/loader.rb:31:in call!' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/loader.rb:18:in call' /home/thedinga/.rvm/gems/[email protected]/gems/shotgun-0.8/lib/shotgun/favicon.rb:12:in call' /home/thedinga/.rvm/gems/[email protected]/gems/rack-1.2.1/lib/rack/builder.rb:77:in call' /home/thedinga/.rvm/gems/[email protected]/gems/rack-1.2.1/lib/rack/content_length.rb:13:in call' /home/thedinga/.rvm/gems/[email protected]/gems/rack-1.2.1/lib/rack/handler/webrick.rb:52:in service' /home/thedinga/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:111:in service' /home/thedinga/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:70:in run' /home/thedinga/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/server.rb:183:in block in start_thread'

अगर मैं बन्दूक के बजाय ruby simple.rb उपयोग करने के लिए थे, मैं उत्पादन आप एक ब्राउज़र में उम्मीद थी मिलता है। एक sidenote के रूप में, अगर मैं इसे Heroku (जो मैं वास्तव में एक sinatra ऐप चलाने के लिए पसंद करेंगे) के लिए धक्का, तो Heroku भी ऐप चलाने में विफल हो जाएगा। क्या यह संस्करण संस्करण 1.9.2 है? या मैं कुछ और याद कर रहा हूँ?

उत्तर

8

काम करता है इसके बाद के संस्करण कोड, बस सही config.ru फ़ाइल पर की आवश्यकता होती है '# {पथ}/MyApp' "# {path}/myapp" की आवश्यकता है।

रूबी में केवल "कैरेक्टर आंतरिक # {} का उपयोग कर सकते हैं।" कैरेक्टर के साथ स्ट्रिंग में स्ट्रिंग जारी रहेगी '# {path}/myapp' और 'value/of/path/variabel/myapp' ।

तो यह निम्नलिखित

# FILE config.ru 

path = File.expand_path "../", __FILE__ 

require 'rubygems' 
require 'sinatra' 
require "#{path}/myapp" 

run Sinatra::Application 


# FILE myapp.rb 

get '/' do 
    'hello' 
end 

स्टार की तरह किया जा सकता है तो बस ऐप्लिकेशन मूल निर्देशिका में आदेश बन्दूक

+0

वाह धन्यवाद, मैं एक नेट लड़का हूं इसलिए मैं इस तरह की चीजें नहीं पकड़ूंगा। –

+0

+200 अंक धन्यवाद – cbmeeks

3

क्या आपने ऐप से कॉन्फ़िगरेशन को डीकॉप्लिंग करने का प्रयास किया था?

मेरे टेम्पलेट की तरह

# FILE config.ru 

path = File.expand_path "../", __FILE__ 

require 'rubygems' 
require 'sinatra' 
require '#{path}/myapp' 

run Sinatra::Application 


# FILE myapp.rb 

get '/' do 
    'hello' 
end 

# FILE start.sh 

shotgun -o 0.0.0.0 -p 8888 & 
ruby1.9.2-p0 साथ

यह कुछ है ..

+0

ठीक है इसलिए मैंने इसे कोई सफलता नहीं दी। मैं सामान्य रूप से रूबी के लिए काफी नया हूं इसलिए मेरे पास कुछ प्रश्न हैं। 1. कॉन्फ़िगर होना चाहिए config.ru? 2. मैं start.sh फ़ाइल में क्या चल रहा है उससे परिचित नहीं हूं। क्या यह 'shotgun config.rb' कमांड को प्रतिस्थापित करता है? –

+0

आपको क्या समस्या हो रही है? – Jack

+0

ब्राउज़र एक ही त्रुटि फेंक रहा है: लोडरर: लोड करने के लिए ऐसी कोई फ़ाइल नहीं - config.rb –

1

मेरे config.ru आम तौर पर बहुत सरल है चल आवेदन:

root = ::File.dirname(__FILE__) 
require ::File.join(root, 'app') 

# Assuming your application is subclassed from Sinatra::Application 
run MyApp.new 

app.rb फ़ाइल (और चाहिए) सिनात्रा की आवश्यकता हो सकती है (और यदि आप 1.9 पर नहीं हैं तो rubygems)।

+0

यह मेरे लिए 1.8.7 और 1.9.2 में काम करता है। यह यहां सबसे बहुमुखी उत्तर है। – Georges

0

मैं रूबी 1.9.2 और सिनात्रा और मैं उपयोग कर रहा हूँ भी शॉटगन के साथ चल रहा है समस्या है। एक सरल कामकाज है: शॉटगन के बजाय sinatra-repeater मणि का उपयोग करें। सिनात्रा बुक में स्थापना और सेटअप का वर्णन किया गया है: http://sinatra-book.gittr.com/#automatic_code_reloading

संबंधित मुद्दे