2016-06-13 6 views
0

これは、私が構築している実際のアプリの抜粋された例です。私は私のアプリを実行すると、これは私が得る結果です。開始前に実行中であることがわかります。あなたはまた、開始が発行された後に走っているとは決して言わないことに気付きます。Sinatraアプリは、実行後のメソッドの代わりにロード中に実行されます

bundle exec rackup 
Using thin; 
Sapp::App running. 
Starting Sapp::App 
== Sinatra (v1.4.7) has taken the stage on 4567 for development with backup from Thin 
Thin web server (v1.7.0 codename Dunder Mifflin) 
Maximum connections set to 1024 
Listening on localhost:4567, CTRL+C to stop 

私config.ruは次のとおりです。

# http://www.rubydoc.info/gems/webmachine/Webmachine/Adapters/Rack 
$started = false 
require 'thin' 
require 'sinatra' 
set :server, (ENV['RACK_ENV'] == 'production' || ENV['RACK_ENV'] == 'staging' ? 'rack' : 'thin') 
puts "Using #{settings.server};" 
load 'webmachine/adapters/rack.rb' 
load File.join(File.dirname(__FILE__), 'sapp.rb') 
$started = true 
puts 'Starting Sapp::App' 
#Sapp::App.run! 
Sinatra::Application.run! 

私は$を設定していますちょうどこの問題を修正しようとし始めたが、それは解決しません。私のアプリは設定される前に実行されます。私はそれを制御することができたが、これは擦れ、実行が発行された後に実行されません。

sapp.rbは次のとおりです。最終的には

ENV['RACK_ENV'] ||= 'development' 
Bundler.setup 
$: << File.expand_path('../', __FILE__) 
$: << File.expand_path('../lib', __FILE__) 
require 'dotenv' 
Dotenv.load(
    File.expand_path("../.env.#{ENV['RACK_ENV']}", __FILE__), 
    File.expand_path("../.env", __FILE__)) 
module Sapp 
    class App < Sinatra::Application 
    puts 'Sapp::App has been started.' if $started 
    puts 'Sapp::App running.' 

    end 
end 

、それは言うたら、「サップ::アプリケーションの起動」、それも言うべき何もない場合は「サップ::アプリケーションが開始されました。」 「Sapp :: App running」と表示されます。レコードの

、両方のこれらのオプションは同じことを実行します。

Sapp::App.run! 
Sinatra::Application.run! 

答えて

1

大丈夫、私はそれを取得します。コードをクラスに入れますが、メソッドではありません。このように両方ともオープン・コードをロードするか両方を必要とします。メソッドでラップし、メソッドを実行して、私がやりたいことをする必要があります。

私が従ったシナトラの例は、これを明確にしておらず、単にそのトピックを避けています。多くは非常にシンプルで違いはありません。また、config.ru内にコード化されたものもあります。私はRailsから来ています.Railsからこれを知っていましたが、大部分のコードが既にメソッドに存在していたので、それは大きな違いはありませんでした。

+0

また、[モジュラスタイルのアプリケーション](http://www.sinatrarb.com/intro)で使用する必要がある 'Sinatra :: Base'ではなく、' Sinatra :: Application'をサブクラス化することに注意してください。 .html#モジュラー%20vs。%20Classic%20Style)。あなたの答えで言及しているシナトラの例に私を指摘できますか?それらが公式文書の一部であれば、私はそれらを修正します。 – Kashyap

+0

@Kashyap現在、Sinatra Up and Runningはそのすべてを明確にしています。私はそれが助けると思う。このアプリはTreviを使用してモジュラーアプリとして生成されましたが、古典的な例を含むように頻繁に変更/再生しました。だから、私が期待していたのは私の未熟なことです。ありがとう。 –

関連する問題