現在の環境を使用して、アクションを定義するかどうかを決定できます。例えば:
class MyApp < Sinatra::Application
if settings.development?
get '/admin' do
'VIPs only'
end
end
end
切り替えるものがたくさんある場合は、必要かどうかを決定できる 1 つのファイルにそれらを分離することをお勧めします。
# routes/init.rb
require_relative 'main'
require_relative 'debug' if settings.development?
# routes/main.rb
class MyApp < Sinatra::Application
get '/' do
'Hello!'
end
end
# routes/debug.rb
class MyApp < Sinatra::Application
get '/admin' do
'VIPs only'
end
end
または、開発専用のパスを 1 か所に一覧表示する場合は、フィルター バージョンを次に示します。
class MyApp < Sinatra::Application
DEVELOPMENT_PATHS = %w[
/admin
]
before do
unless settings.development? || !DEVELOPMENT_PATHS.include?(request.path)
halt 404
end
end
end
次に、リストに追加するデコレーターのようなメソッドをいくつか作成することもできます。
class MyApp < Sinatra::Application
def self.development_only(path)
DEVELOPMENT_PATHS << path
end
get '/admin' do
'VIPs only'
end
development_only '/admin
end
一般に、開発と本番環境で実行されるコードに大きな違いを導入する場合は注意することをお勧めします。必然的に、開発コードはテストされないままになるか、適切に保守するのが面倒になります。この場合、非表示にするつもりだったルートを見逃してしまい、本番環境の全員がルートを利用できるようになる危険性があります。これらのルートをまったく持たず、コンソールから開発環境を操作するか、反対側まで行って、sinatra-authentication のようなものを使用して、完全にテストされ、本番環境に対応したユーザー権限を構築する傾向があります。