Class: Sqreen::Frameworks::RailsFramework
Overview
Rails related framework code
Defined Under Namespace
Classes: Init
Constant Summary
collapse
- DB_MAPPING =
{
'SQLite' => :sqlite,
'MySQL' => :mysql,
'Mysql2' => :mysql,
}.freeze
- P_OTHER =
'other'.freeze
GenericFramework::LOCALHOST, GenericFramework::PREFERRED_IP_HEADERS, GenericFramework::P_COOKIE, GenericFramework::P_FORM, GenericFramework::P_GRAPE, GenericFramework::P_QUERY, GenericFramework::P_RACK, GenericFramework::P_RACK_ROUTING, GenericFramework::TRUSTED_PROXIES
Instance Attribute Summary
#req_end_cb, #req_start_cb, #sqreen_configuration
Class Method Summary
collapse
Instance Method Summary
collapse
#body, #clean_request, #client_ip, #client_user_agent, cookies_params, #cwd, #datadog_span, #datadog_trace, #filtered_request_params, form_params, #full_params_include?, #graphql_args=, #header, #hostname, #http_headers, #mark_request_overtime!, #params_include?, query_params, #rack_client_ip, rack_params, #remaining_perf_budget, #remaining_perf_budget=, #remote_addr, #request, #request_infos, #request_params, #request_path, #response, #response_infos, #store_request, #store_response, #test?, #whitelisted_ip, #whitelisted_match, #whitelisted_path, #xss_params
#clean_request_record, #close_request_record, #observe, #observed_items, #observed_items=, #only_metric_observation, #only_metric_observation=, #payload_requests, #payload_requests=
Constructor Details
Returns a new instance of RailsFramework.
22
23
24
|
# File 'lib/sqreen/frameworks/rails.rb', line 22
def initialize
super
end
|
Class Method Details
.parameters_from_request(request) ⇒ Object
135
136
137
138
139
140
|
# File 'lib/sqreen/frameworks/rails.rb', line 135
def self.parameters_from_request(request)
return {} unless request
ret = super(request)
ret[P_OTHER] = rails_params(request)
ret
end
|
.rails_params(request) ⇒ Object
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/sqreen/frameworks/rails.rb', line 122
def self.rails_params(request)
return nil unless request
other = request.env['action_dispatch.request.parameters']
return nil unless other
other = other.dup
other.delete :action
other.delete :controller
other
end
|
Instance Method Details
#application_name ⇒ Object
84
85
86
|
# File 'lib/sqreen/frameworks/rails.rb', line 84
def application_name
Rails.application.class.name.deconstantize.underscore
end
|
#db_settings(options = {}) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/sqreen/frameworks/rails.rb', line 38
def db_settings(options = {})
adapter = options[:connection_adapter]
return nil unless adapter
begin
adapter_name = adapter.adapter_name
rescue
Sqreen.log.warn 'cannot find ADAPTER_NAME'
return nil
end
db_type = DB_MAPPING[adapter_name]
db_infos = { :name => adapter_name }
[db_type, db_infos]
end
|
#development? ⇒ Boolean
34
35
36
|
# File 'lib/sqreen/frameworks/rails.rb', line 34
def development?
Rails.env.development?
end
|
#framework_infos ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/sqreen/frameworks/rails.rb', line 26
def framework_infos
{
:framework_type => 'Rails',
:framework_version => Rails::VERSION::STRING,
:environment => Rails.env.to_s,
}
end
|
#instrument_when_ready!(instrumentor, rules) ⇒ Object
114
115
116
|
# File 'lib/sqreen/frameworks/rails.rb', line 114
def instrument_when_ready!(instrumentor, rules)
instrumentor.instrument!(rules, self)
end
|
54
55
56
57
58
59
|
# File 'lib/sqreen/frameworks/rails.rb', line 54
def
ret = super
remote_ip = rails_client_ip
ret << ['action_dispatch.remote_ip', remote_ip] unless remote_ip.nil?
ret
end
|
#prevent_startup ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/sqreen/frameworks/rails.rb', line 100
def prevent_startup
res = super
return res if res
run_in_test = sqreen_configuration.get(:run_in_test)
return :rails_test if !run_in_test && (Rails.env.test? || Rails.env.cucumber?)
return nil unless defined?(Rails::CommandsTasks)
return nil if defined?(Rails::Server)
return :rails_console if defined?(Rails::Console)
return :rails_dbconsole if defined?(Rails::DBConsole)
return :rails_generators if defined?(Rails::Generators)
nil
end
|
#rails_client_ip ⇒ Object
What is the current client IP as seen by rails
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/sqreen/frameworks/rails.rb', line 62
def rails_client_ip
req = request
return unless req && req.env
remote_ip = req.env['action_dispatch.remote_ip']
return unless remote_ip
return remote_ip.calculate_ip if remote_ip.respond_to?(:calculate_ip)
remote_ip.to_s
end
|
#rails_params ⇒ Object
118
119
120
|
# File 'lib/sqreen/frameworks/rails.rb', line 118
def rails_params
self.class.rails_params(request)
end
|
#request_id ⇒ Object
74
75
76
77
78
|
# File 'lib/sqreen/frameworks/rails.rb', line 74
def request_id
req = request
return super unless req
req.env['action_dispatch.request_id'] || super
end
|
#root ⇒ Object
80
81
82
|
# File 'lib/sqreen/frameworks/rails.rb', line 80
def root
Rails.application.root
end
|