これは、私が構築している実際のアプリの抜粋された例です。私は私のアプリを実行すると、これは私が得る結果です。開始前に実行中であることがわかります。あなたはまた、開始が発行された後に走っているとは決して言わないことに気付きます。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!
また、[モジュラスタイルのアプリケーション](http://www.sinatrarb.com/intro)で使用する必要がある 'Sinatra :: Base'ではなく、' Sinatra :: Application'をサブクラス化することに注意してください。 .html#モジュラー%20vs。%20Classic%20Style)。あなたの答えで言及しているシナトラの例に私を指摘できますか?それらが公式文書の一部であれば、私はそれらを修正します。 – Kashyap
@Kashyap現在、Sinatra Up and Runningはそのすべてを明確にしています。私はそれが助けると思う。このアプリはTreviを使用してモジュラーアプリとして生成されましたが、古典的な例を含むように頻繁に変更/再生しました。だから、私が期待していたのは私の未熟なことです。ありがとう。 –