ho lottato con questo, anche. Ecco cosa ho scoperto lungo la strada.
Devi essere "dentro" una classe che eredita da Sinatra :: Base (come Sinatra :: Application, che eredita da Base) per essere in grado di utilizzare il metodo development?
, che è definito in base.rb.
In un classico Sinatra app che già la codifica "dentro" una classe che eredita da Sinatra :: Base. Quindi development?
funzionerà "ovunque".
Nel Sinatra modulare la development?
funzionerà solo in Sinatra :: Base sottoclassi, come ad esempio:
require 'sinatra/base'
# Placing
# require 'dm-sqlite-adapter' if development?
# here will not work.
class ApplicationController < Sinatra::Base
require 'dm-sqlite-adapter' if development? # But here it works
...
end
# Placing
# require 'dm-sqlite-adapter' if development?`
# AFTER the above class will still not work
class SomethingElse
# nor will `development?` work here, since it is called inside
# a class without Sinatra::Base inheritance
...
end
Quindi, in pratica è possibile utilizzare una classe che eredita da ApplicationController Sinatra :: Base e qui dentro controllare per development?
. Lo stesso vale per le sottoclassi che eredita dalla classe ApplicationController:
class UserController < ApplicationController
require 'dotenv' if development?
...
end
Per Sinatra modulare, nella (principale: Object) testo del codice "fuori" Sinatra :: Base sottoclassi, è necessario seguire Arup's istruzioni:
if Sinatra::Base.environment == :development
require 'awesome_print'
require 'dotenv'
Dotenv.load
...
end
Cosa succede se lo si utilizza come simbolo (con un carattere di due punti) richiede "xyz" se: sviluppo? –
risolto. Grazie molto. Se vuoi metterlo come risposta, sarò felice di accettarlo come corretto. Qual è la differenza tra sintassi simbolo e non simbolo? Come faccio a sapere quando usare quale? –
@EmanueleFeliziani che non è una correzione '... if: any_symbol_whatsoever' restituirà sempre true, in quanto un simbolo non è' nil' o 'false'. – matt