class Grape::App
Public Class Methods
config()
click to toggle source
@return [Grape::App::Configuration] the configuration
# File lib/grape/app.rb, line 45 def config @config ||= if respond_to?(:superclass) && superclass.respond_to?(:config) superclass.config.inheritable_copy else Class.new(Grape::App::Configuration).new end end
configure() { |config| ... }
click to toggle source
Configure the app
# File lib/grape/app.rb, line 54 def configure yield config end
env()
click to toggle source
@return [ActiveSupport::StringInquirer] env name
# File lib/grape/app.rb, line 64 def env @env ||= ActiveSupport::StringInquirer.new(ENV.fetch('GRAPE_ENV') { ENV.fetch('RACK_ENV', 'development') }) end
init!(root = nil)
click to toggle source
Run initializers
# File lib/grape/app.rb, line 17 def init!(root = nil) @root = Pathname.new(root) if root # Require bundle Bundler.require :default, env.to_sym # Update load path $LOAD_PATH.push self.root.join('lib').to_s # Push dirs to loader push_dir? self.root.join('app') push_dir? self.root.join('app', 'models') # Load initializers require 'grape/app/initializers/pre' require_one 'config', 'environments', env require_all 'config', 'initializers' require 'grape/app/initializers/post' # Setup loader loader.setup # Load app require_one 'app', 'api' Zeitwerk::Loader.eager_load_all if Grape::App.config.eager_load end
loader()
click to toggle source
@return [Zeitwerk::Loader] loader
# File lib/grape/app.rb, line 69 def loader @loader ||= Zeitwerk::Loader.new.tap do |l| l.inflector = Grape::App::Inflector.new end end
middleware()
click to toggle source
# File lib/grape/app.rb, line 75 def middleware config = self.config @middleware ||= Rack::Builder.new do use Rack::Cors, &config.cors if config.cors if config.force_ssl.is_a?(Hash) use Rack::SslEnforcer, **config.force_ssl elsif config.force_ssl use Rack::SslEnforcer end config.middleware.each do |block| instance_eval(&block) end use Grape::App::Middleware::ConnectionManagement if defined?(ActiveRecord) run Grape::App end end
root()
click to toggle source
@return [Pathname] root path
# File lib/grape/app.rb, line 59 def root @root ||= Bundler.root.dup end
Private Class Methods
push_dir?(dir)
click to toggle source
# File lib/grape/app.rb, line 98 def push_dir?(dir) loader.push_dir(dir) if dir.exist? end
require_all(*args)
click to toggle source
# File lib/grape/app.rb, line 102 def require_all(*args) args += ['**', '*.rb'] Dir[root.join(*args).to_s].sort.each {|f| require f } end
require_one(*args)
click to toggle source
# File lib/grape/app.rb, line 107 def require_one(*args) path = root.join(*args).to_s require path if File.exist?("#{path}.rb") end