scrap 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,13 +5,32 @@ For use in Rack apps: install the gem, require 'scrap', and run Scrap as a middl
5
5
 
6
6
  Scrap will provide a new url, <code>/stats/scrap</code>, which will report a number of metrics about your app.
7
7
 
8
- For an example of the output, see [TBD].
8
+ For an example of the output, see sample.html (taken from a very large
9
+ Rails app).
10
+
11
+ ## Usage
12
+
13
+ If you're running scrap in a Rails app, just add it to your Gemfile (or
14
+ install it and require it, if you're not using Bundler). Scrap comes
15
+ with a Rails::Engine that will automatically require the middleware and
16
+ add its route.
17
+
18
+ If you're not using Rails, then you'll have to add Scrap::Middleware to
19
+ your middleware stack.
20
+
21
+ Scrap is not recommended for long-term production usage, as it does
22
+ incur a significant (though not crippling) performance penalty.
23
+ Typically, you would install it for a few days at a time when you
24
+ suspect you have a memory problem and want to hunt it down, then remove
25
+ Scrap once you're done debugging.
9
26
 
10
27
  ## Dependencies
11
28
 
12
29
  None, really, though Scrap is intended for Linux systems. On OS
13
30
  X, the Ruby GC statistics will be displayed, but overall process memory
14
- usage will not be reported.
31
+ usage will not be reported. Scrap has been tested extensively with Ruby 1.9 on Rails 3.0.x, and
32
+ less so on 3.1.x and 3.2.x. Reports of Scrap's usefulness in other
33
+ configurations are welcome.
15
34
 
16
35
  ## Config
17
36
 
@@ -30,7 +49,8 @@ If present, Scrap will use a config/scrap.yml file. See the provided example fil
30
49
  Scrap was originally written for Ruby 1.8.7, with lots of switches to
31
50
  enable it to take advantage of REE's better GC statistics visibility.
32
51
  I've rewritten the switches to allow Scrap to use 1.9.3's statistics,
33
- though they're harder to understand than REE's.
52
+ though they're harder to understand than REE's. Scrap should still work
53
+ well with REE, and less well (but as well as possible) on MRI 1.8.7.
34
54
 
35
55
  ## Contributing
36
56
 
@@ -1,3 +1,3 @@
1
1
  Rails.application.routes.draw do
2
- match "/stats/scrap" => Scrap
2
+ mount Scrap::Middleware => "/stats/scrap"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require "scrap/version"
2
2
  module Scrap
3
3
 
4
- class Scrap
4
+ class Middleware
5
5
  COMMIFY_REGEX = /(\d)(?=(\d\d\d)+(?!\d))/
6
6
  CRLF = "\r\n"
7
7
 
@@ -10,7 +10,7 @@ class Scrap
10
10
  end
11
11
 
12
12
  def call(env)
13
- Scrap.call(env)
13
+ self.class.call(env)
14
14
  end
15
15
 
16
16
  @@gc_stats = {}
@@ -212,6 +212,6 @@ class Scrap
212
212
  end
213
213
  end
214
214
 
215
- require "scrap/railtie" if defined? Rails
215
+ require "scrap/engine" if defined? Rails
216
216
 
217
217
  end
@@ -0,0 +1,8 @@
1
+ module Scrap
2
+ class Engine < Rails::Engine
3
+ initializer "scrap.insert_middleware" do |app|
4
+ app.config.middleware.use Scrap::Middleware
5
+ end
6
+ # endpoint Scrap::Middleware if defined? :endpoint
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module Scrap
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,12 +1,16 @@
1
1
  <html><head>
2
- <meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>[9752] Garbage Report</title><style> body { font-family: monospace; color: #222; } td { border-bottom: 1px solid #eee; padding: 1px 9px; } td.t { background: #fafafa; } tr:hover td { background: #fafaf0; border-color: #e0e0dd; } h1,h2,h3 { border-bottom: 1px solid #ddd; font-family: sans-serif; } </style></head><body><h1>Scrap - PID 9752</h1><table><tbody><tr><td class="t">Memory usage:</td><td>59.01MB</td></tr><tr><td class="t">Delta:</td><td>0.00MB</td></tr><tr><td class="t">Last Scrap req:</td><td>0.39 seconds ago</td></tr><tr><td class="t">Requests processed:</td><td>1</td></tr><tr><td class="t">Alive for:</td><td>0.39 seconds</td></tr><tr><td class="t">Time spent in GC:</td><td>0.18 seconds</td></tr><tr><td class="t">Collected objects:</td><td>309826</td></tr><tr><td class="t">Live objects:</td><td>696773</td></tr></tbody></table><h3>Top deltas since last request</h3><table border="0"><tbody><tr><td class="t">String</td><td>+153,220</td></tr><tr><td class="t">Array</td><td>+5,690</td></tr><tr><td class="t">Proc</td><td>+3,268</td></tr><tr><td class="t">Hash</td><td>+3,090</td></tr><tr><td class="t">Regexp</td><td>+1,978</td></tr><tr><td class="t">Class</td><td>+1,362</td></tr><tr><td class="t">ActionController::Routing::DividerSegment</td><td>+946</td></tr><tr><td class="t">ActiveSupport::Callbacks::Callback</td><td>+754</td></tr><tr><td class="t">ActionController::Routing::StaticSegment</td><td>+604</td></tr><tr><td class="t">Module</td><td>+563</td></tr><tr><td class="t">Gem::Version</td><td>+425</td></tr><tr><td class="t">Gem::Requirement</td><td>+389</td></tr><tr><td class="t">ActionController::Routing::Route</td><td>+305</td></tr><tr><td class="t">ActionController::Routing::DynamicSegment</td><td>+258</td></tr><tr><td class="t">ActionController::Routing::OptionalFormatSegment</td><td>+223</td></tr><tr><td class="t">ActiveSupport::Callbacks::CallbackChain</td><td>+218</td></tr><tr><td class="t">Range</td><td>+190</td></tr><tr><td class="t">ActiveRecord::Reflection::AssociationReflection</td><td>+142</td></tr><tr><td class="t">Time</td><td>+132</td></tr><tr><td class="t">Gem::Specification</td><td>+128</td></tr><tr><td class="t">Gem::Dependency</td><td>+120</td></tr><tr><td class="t">Float</td><td>+103</td></tr><tr><td class="t">UnboundMethod</td><td>+98</td></tr><tr><td class="t">Magick::CompositeOperator</td><td>+56</td></tr><tr><td class="t">Set</td><td>+34</td></tr><tr><td class="t">Magick::PreviewType</td><td>+30</td></tr><tr><td class="t">HashWithIndifferentAccess</td><td>+24</td></tr><tr><td class="t">Magick::ColorspaceType</td><td>+23</td></tr><tr><td class="t">Magick::FilterTypes</td><td>+22</td></tr><tr><td class="t">Mime::Type</td><td>+21</td></tr><tr><td class="t">ActiveRecord::Reflection::ThroughReflection</td><td>+19</td></tr><tr><td class="t">Magick::ChannelType</td><td>+18</td></tr><tr><td class="t">Magick::ImageLayerMethod</td><td>+16</td></tr><tr><td class="t">Rails::Plugin</td><td>+15</td></tr><tr><td class="t">Rails::OrderedOptions</td><td>+14</td></tr><tr><td class="t">Magick::VirtualPixelMethod</td><td>+13</td></tr><tr><td class="t">Magick::GravityType</td><td>+12</td></tr><tr><td class="t">Magick::QuantumExpressionOperator</td><td>+12</td></tr><tr><td class="t">ActionController::MiddlewareStack::Middleware</td><td>+12</td></tr><tr><td class="t">Magick::ImageType</td><td>+12</td></tr><tr><td class="t">Mutex</td><td>+12</td></tr><tr><td class="t">Rails::GemDependency</td><td>+11</td></tr><tr><td class="t">Rails::GemPlugin</td><td>+11</td></tr><tr><td class="t">Magick::CompressionType</td><td>+11</td></tr><tr><td class="t">Magick::StretchType</td><td>+10</td></tr><tr><td class="t">Bignum</td><td>+9</td></tr><tr><td class="t">Magick::OrientationType</td><td>+9</td></tr><tr><td class="t">ThinkingSphinx::Index::FauxColumn</td><td>+9</td></tr><tr><td class="t">Magick::InterlaceType</td><td>+8</td></tr><tr><td class="t">Magick::DistortImageMethod</td><td>+8</td></tr></tbody></table><h3>Top objects</h3><table border="0"><tbody><tr><td class="t">String</td><td>111,167</td></tr><tr><td class="t">Array</td><td>5,860</td></tr><tr><td class="t">Proc</td><td>3,268</td></tr><tr><td class="t">Hash</td><td>3,091</td></tr><tr><td class="t">Regexp</td><td>1,978</td></tr><tr><td class="t">Class</td><td>1,362</td></tr><tr><td class="t">ActionController::Routing::DividerSegment</td><td>946</td></tr><tr><td class="t">ActiveSupport::Callbacks::Callback</td><td>754</td></tr><tr><td class="t">ActionController::Routing::StaticSegment</td><td>604</td></tr><tr><td class="t">Module</td><td>563</td></tr><tr><td class="t">Gem::Version</td><td>425</td></tr><tr><td class="t">Gem::Requirement</td><td>389</td></tr><tr><td class="t">ActionController::Routing::Route</td><td>305</td></tr><tr><td class="t">ActionController::Routing::DynamicSegment</td><td>258</td></tr><tr><td class="t">ActionController::Routing::OptionalFormatSegment</td><td>223</td></tr><tr><td class="t">ActiveSupport::Callbacks::CallbackChain</td><td>218</td></tr><tr><td class="t">Range</td><td>190</td></tr><tr><td class="t">ActiveRecord::Reflection::AssociationReflection</td><td>142</td></tr><tr><td class="t">Time</td><td>130</td></tr><tr><td class="t">Gem::Specification</td><td>128</td></tr><tr><td class="t">Gem::Dependency</td><td>120</td></tr><tr><td class="t">UnboundMethod</td><td>98</td></tr><tr><td class="t">Float</td><td>94</td></tr><tr><td class="t">Magick::CompositeOperator</td><td>56</td></tr><tr><td class="t">Set</td><td>34</td></tr><tr><td class="t">Magick::PreviewType</td><td>30</td></tr><tr><td class="t">HashWithIndifferentAccess</td><td>24</td></tr><tr><td class="t">Magick::ColorspaceType</td><td>23</td></tr><tr><td class="t">Magick::FilterTypes</td><td>22</td></tr><tr><td class="t">Mime::Type</td><td>21</td></tr><tr><td class="t">ActiveRecord::Reflection::ThroughReflection</td><td>19</td></tr><tr><td class="t">Magick::ChannelType</td><td>18</td></tr><tr><td class="t">Magick::ImageLayerMethod</td><td>16</td></tr><tr><td class="t">Rails::Plugin</td><td>15</td></tr><tr><td class="t">Rails::OrderedOptions</td><td>14</td></tr><tr><td class="t">Magick::VirtualPixelMethod</td><td>13</td></tr><tr><td class="t">Magick::QuantumExpressionOperator</td><td>12</td></tr><tr><td class="t">Mutex</td><td>12</td></tr><tr><td class="t">ActionController::MiddlewareStack::Middleware</td><td>12</td></tr><tr><td class="t">Magick::ImageType</td><td>12</td></tr><tr><td class="t">Magick::GravityType</td><td>12</td></tr><tr><td class="t">Rails::GemDependency</td><td>11</td></tr><tr><td class="t">Magick::CompressionType</td><td>11</td></tr><tr><td class="t">Rails::GemPlugin</td><td>11</td></tr><tr><td class="t">Magick::StretchType</td><td>10</td></tr><tr><td class="t">Magick::OrientationType</td><td>9</td></tr><tr><td class="t">Bignum</td><td>9</td></tr><tr><td class="t">ThinkingSphinx::Index::FauxColumn</td><td>9</td></tr><tr><td class="t">Magick::MetricType</td><td>8</td></tr><tr><td class="t">Magick::StorageType</td><td>8</td></tr></tbody></table><h3>Request history</h3>[59.01 MB] GET /stats/scrap<pre>Number of objects : 824154 (612748 AST nodes, 74.35%)
3
- Heap slot size : 20
4
- GC cycles so far : 26
5
- Number of heaps : 7
6
- Total size of objects: 16096.76 KB
7
- Total size of heaps : 18036.66 KB (1939.91 KB = 10.76% unused)
8
- Leading free slots : 13649 (266.58 KB = 1.48%)
9
- Trailing free slots : 0 (0.00 KB = 0.00%)
10
- Number of contiguous groups of 16 slots: 2113 (3.66%)
11
- Number of terminal objects: 3890 (0.42%)
12
- </pre><br></body></html>
2
+ <title>[24212] Garbage Report</title>
3
+ <style type="text/css"> body { font-family: monospace; color: #222; } td { border-bottom: 1px solid #eee; padding: 1px 9px; } td.t { background: #fafafa; } tr:hover td { background: #fafaf0; border-color: #e0e0dd; } h1,h2,h3 { border-bottom: 1px solid #ddd; font-family: sans-serif; } </style>
4
+ <body>
5
+ <h1>Scrap - PID 24212</h1>
6
+ <table>
7
+ <tr><td class="t">Virtual Memory usage:</td><td>964.59MB</td></tr><tr><td class="t">Real Memory usage:</td><td>188.09MB</td></tr><tr><td class="t">Vsize Delta:</td><td>0.00MB</td></tr><tr><td class="t">RSS Delta:</td><td>0.05MB</td></tr><tr><td class="t">Last Scrap req:</td><td>0.37 seconds ago</td></tr><tr><td class="t">Requests processed:</td><td>1</td></tr><tr><td class="t">Alive for:</td><td>0.37 seconds</td></tr><tr><td class="t">Total time spent in GC:</td><td>0.04 seconds</td></tr></table>
8
+ <h3>Top deltas since last request</h3><table border="0"><tr><td class='t'>String</td><td>+319,819</td></tr><tr><td class='t'>Array</td><td>+72,729</td></tr><tr><td class='t'>RubyVM::InstructionSequence</td><td>+54,822</td></tr><tr><td class='t'>Hash</td><td>+13,820</td></tr><tr><td class='t'>Proc</td><td>+11,491</td></tr><tr><td class='t'>RubyVM::Env</td><td>+8,470</td></tr><tr><td class='t'>Gem::Version</td><td>+5,438</td></tr><tr><td class='t'>Regexp</td><td>+5,035</td></tr><tr><td class='t'>Gem::Requirement</td><td>+4,871</td></tr><tr><td class='t'>Class</td><td>+4,459</td></tr><tr><td class='t'>Gem::Dependency</td><td>+3,179</td></tr><tr><td class='t'>Regin::Character</td><td>+2,873</td></tr><tr><td class='t'>Factory::Attribute::Static</td><td>+2,538</td></tr><tr><td class='t'>Factory::Attribute::Dynamic</td><td>+2,324</td></tr><tr><td class='t'>XSD::QName</td><td>+2,209</td></tr><tr><td class='t'>ActiveSupport::Callbacks::Callback</td><td>+2,108</td></tr><tr><td class='t'>Module</td><td>+1,871</td></tr><tr><td class='t'>SOAP::Mapping::SchemaElementDefinition</td><td>+1,556</td></tr><tr><td class='t'>MIME::Type</td><td>+1,517</td></tr><tr><td class='t'>Float</td><td>+1,061</td></tr><tr><td class='t'>Time</td><td>+725</td></tr><tr><td class='t'>Range</td><td>+687</td></tr><tr><td class='t'>ActiveSupport::Callbacks::CallbackChain</td><td>+667</td></tr><tr><td class='t'>Gem::Specification</td><td>+662</td></tr><tr><td class='t'>Regin::Expression</td><td>+611</td></tr><tr><td class='t'>ActiveRecord::ConnectionAdapters::Mysql2Column</td><td>+587</td></tr><tr><td class='t'>ActiveRecord::Reflection::AssociationReflection</td><td>+538</td></tr><tr><td class='t'>SOAP::Mapping::SchemaDefinition</td><td>+520</td></tr><tr><td class='t'>Factory::Attribute::Callback</td><td>+506</td></tr><tr><td class='t'>Factory</td><td>+503</td></tr><tr><td class='t'>Regin::Group</td><td>+421</td></tr><tr><td class='t'>Bundler::Dependency</td><td>+366</td></tr><tr><td class='t'>Regin::Anchor</td><td>+357</td></tr><tr><td class='t'>ActiveRecord::Relation</td><td>+343</td></tr><tr><td class='t'>Arel::Nodes::SelectStatement</td><td>+339</td></tr><tr><td class='t'>Arel::Nodes::SelectCore</td><td>+339</td></tr><tr><td class='t'>Arel::SelectManager</td><td>+339</td></tr><tr><td class='t'>Arel::SqlLiteral</td><td>+338</td></tr><tr><td class='t'>SOAP::Mapping::SchemaSequenceDefinition</td><td>+304</td></tr><tr><td class='t'>Rack::Mount::GeneratableRegexp::DynamicSegment</td><td>+277</td></tr><tr><td class='t'>Bundler::LazySpecification</td><td>+270</td></tr><tr><td class='t'>Regin::CharacterClass</td><td>+254</td></tr><tr><td class='t'>ActiveModel::Validations::PresenceValidator</td><td>+228</td></tr><tr><td class='t'>Rails::Initializable::Initializer</td><td>+227</td></tr><tr><td class='t'>Rails::Paths::Path</td><td>+219</td></tr><tr><td class='t'>TZInfo::TimezoneTransitionInfo</td><td>+212</td></tr><tr><td class='t'>Rack::Mount::Route</td><td>+202</td></tr><tr><td class='t'>ActionDispatch::Routing::Route</td><td>+202</td></tr><tr><td class='t'>ActionDispatch::Routing::RouteSet::Dispatcher</td><td>+201</td></tr><tr><td class='t'>LibXML::XML::XXPath</td><td>+192</td></tr></table><h3>Top objects</h3><table border="0"><tr><td class='t'>String</td><td>323,627</td></tr><tr><td class='t'>Array</td><td>70,462</td></tr><tr><td class='t'>RubyVM::InstructionSequence</td><td>54,822</td></tr><tr><td class='t'>Hash</td><td>13,679</td></tr><tr><td class='t'>Proc</td><td>11,484</td></tr><tr><td class='t'>RubyVM::Env</td><td>8,463</td></tr><tr><td class='t'>Gem::Version</td><td>5,438</td></tr><tr><td class='t'>Regexp</td><td>4,956</td></tr><tr><td class='t'>Gem::Requirement</td><td>4,871</td></tr><tr><td class='t'>Class</td><td>4,459</td></tr><tr><td class='t'>Gem::Dependency</td><td>3,179</td></tr><tr><td class='t'>Regin::Character</td><td>2,873</td></tr><tr><td class='t'>Factory::Attribute::Static</td><td>2,538</td></tr><tr><td class='t'>Factory::Attribute::Dynamic</td><td>2,324</td></tr><tr><td class='t'>XSD::QName</td><td>2,209</td></tr><tr><td class='t'>ActiveSupport::Callbacks::Callback</td><td>2,108</td></tr><tr><td class='t'>Module</td><td>1,871</td></tr><tr><td class='t'>SOAP::Mapping::SchemaElementDefinition</td><td>1,556</td></tr><tr><td class='t'>MIME::Type</td><td>1,517</td></tr><tr><td class='t'>Float</td><td>1,061</td></tr><tr><td class='t'>Time</td><td>725</td></tr><tr><td class='t'>Range</td><td>687</td></tr><tr><td class='t'>ActiveSupport::Callbacks::CallbackChain</td><td>667</td></tr><tr><td class='t'>Gem::Specification</td><td>662</td></tr><tr><td class='t'>Regin::Expression</td><td>611</td></tr><tr><td class='t'>ActiveRecord::ConnectionAdapters::Mysql2Column</td><td>587</td></tr><tr><td class='t'>ActiveRecord::Reflection::AssociationReflection</td><td>538</td></tr><tr><td class='t'>SOAP::Mapping::SchemaDefinition</td><td>520</td></tr><tr><td class='t'>Factory::Attribute::Callback</td><td>506</td></tr><tr><td class='t'>Factory</td><td>503</td></tr><tr><td class='t'>Regin::Group</td><td>421</td></tr><tr><td class='t'>Bundler::Dependency</td><td>366</td></tr><tr><td class='t'>Regin::Anchor</td><td>357</td></tr><tr><td class='t'>Arel::SelectManager</td><td>343</td></tr><tr><td class='t'>ActiveRecord::Relation</td><td>343</td></tr><tr><td class='t'>Arel::Nodes::SelectCore</td><td>343</td></tr><tr><td class='t'>Arel::SqlLiteral</td><td>343</td></tr><tr><td class='t'>Arel::Nodes::SelectStatement</td><td>343</td></tr><tr><td class='t'>SOAP::Mapping::SchemaSequenceDefinition</td><td>304</td></tr><tr><td class='t'>Rack::Mount::GeneratableRegexp::DynamicSegment</td><td>277</td></tr><tr><td class='t'>Bundler::LazySpecification</td><td>270</td></tr><tr><td class='t'>Regin::CharacterClass</td><td>254</td></tr><tr><td class='t'>ActiveModel::Validations::PresenceValidator</td><td>228</td></tr><tr><td class='t'>Rails::Initializable::Initializer</td><td>227</td></tr><tr><td class='t'>Rails::Paths::Path</td><td>219</td></tr><tr><td class='t'>TZInfo::TimezoneTransitionInfo</td><td>212</td></tr><tr><td class='t'>Rack::Mount::Route</td><td>202</td></tr><tr><td class='t'>ActionDispatch::Routing::Route</td><td>202</td></tr><tr><td class='t'>ActionDispatch::Routing::RouteSet::Dispatcher</td><td>201</td></tr><tr><td class='t'>LibXML::XML::XXPath</td><td>192</td></tr></table><h3>Request history</h3><p>vsize:[964.59 MB] rss:[188.04 MB] GET /stats/scrap</p><pre>GC cycles so far: 1245
9
+ Number of heaps : 1819
10
+ Number of objects : 743616
11
+ Heap length : 3272
12
+ Heap increment : 1453
13
+ Heap live num : 632437
14
+ Heap free num : 111147
15
+ Heap final num : 0
16
+ </pre></body></html>
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = "scrap"
7
7
  s.version = Scrap::VERSION
8
8
  s.authors = ["Chris Heald", "Bradley Harris", "Ben Somers", "Joseph Chen"]
9
- s.email = ["joseph.chen@gmail.com", "somers.ben@gmail.com"]
9
+ s.email = ["somers.ben@gmail.com", "joseph.chen@gmail.com"]
10
10
  s.homepage = "http://www.github.com/bensomers/scrap"
11
11
  s.summary = %q{Scrap is a Rack endpoint designed to expose various garbage and memory-related metrics about your app. Intended for tracking down memory leaks and bloat.}
12
12
  s.description = %q{Scrap is a Rack endpoint designed to expose various garbage and memory-related metrics about your app. Intended for tracking down memory leaks and bloat.}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,13 +12,13 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-09-12 00:00:00.000000000 Z
15
+ date: 2012-09-13 00:00:00.000000000 Z
16
16
  dependencies: []
17
17
  description: Scrap is a Rack endpoint designed to expose various garbage and memory-related
18
18
  metrics about your app. Intended for tracking down memory leaks and bloat.
19
19
  email:
20
- - joseph.chen@gmail.com
21
20
  - somers.ben@gmail.com
21
+ - joseph.chen@gmail.com
22
22
  executables: []
23
23
  extensions: []
24
24
  extra_rdoc_files: []
@@ -30,7 +30,7 @@ files:
30
30
  - Rakefile
31
31
  - config/routes.rb
32
32
  - lib/scrap.rb
33
- - lib/scrap/railtie.rb
33
+ - lib/scrap/engine.rb
34
34
  - lib/scrap/version.rb
35
35
  - sample.html
36
36
  - scrap.gemspec
@@ -1,7 +0,0 @@
1
- module Scrap
2
- class Railtie < Rails::Railtie
3
- initializer "scrap.insert_middleware" do |app|
4
- app.config.middleware.use "Scrap::Scrap"
5
- end
6
- end
7
- end