sprockets-rack 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ class Sprockets::Middleware
2
+ def initialize(app, options = {})
3
+ @app = app
4
+ @config_files = options.delete(:config_files) ||
5
+ options.delete(:config_file).to_a
6
+ @options = options
7
+
8
+ if @config_files.empty?
9
+ if @options.include? :root
10
+ if File.exist? default_config_file
11
+ @config_files = [default_config_file]
12
+ end
13
+ else
14
+ raise ArgumentError, "Sprockets::Middleware needs :root option."
15
+ end
16
+ end
17
+ end
18
+
19
+ def call(env)
20
+ if env['PATH_INFO'] == configuration[:path]
21
+ response
22
+ else
23
+ @app.call(env)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def default_config_file
30
+ File.join(@options[:root], 'sprockets.yml')
31
+ end
32
+
33
+ def self.def_cached(name, &block)
34
+ if ENV['RACK_ENV'] == 'development'
35
+ define_method(name, &block)
36
+ else
37
+ content = nil
38
+ define_method(name) { content ||= instance_eval(&block) }
39
+ end
40
+ end
41
+
42
+ def_cached :response do
43
+ [200, headers, content]
44
+ end
45
+
46
+ def headers
47
+ {
48
+ 'Cache-Control' => 'public, max-age=86400',
49
+ 'Content-Type' => 'text/javascript',
50
+ 'Content-Length' => content.size.to_s
51
+ }
52
+ end
53
+
54
+ def content
55
+ Sprockets::Secretary.new(configuration).concatenation.to_s
56
+ end
57
+
58
+ def_cached :configuration do
59
+ default_configuration.merge(normalized_configuration)
60
+ end
61
+
62
+ def default_configuration
63
+ { :path => '/sprockets.js', :source_files => ['*.js'] }
64
+ end
65
+
66
+ def normalized_configuration
67
+ normalize(file_configuration.merge(@options))
68
+ end
69
+
70
+ def normalize(options)
71
+ Hash[options.map { |key, value| [key.to_sym, value] }]
72
+ end
73
+
74
+ def file_configuration
75
+ @config_files.inject({}) do |configuration, file_name|
76
+ configuration.merge(YAML.load(File.read(file_name)))
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,9 @@
1
+ asset_root: public
2
+ load_path:
3
+ - app/javascripts
4
+ - vendor/sprockets/*/src
5
+ - vendor/plugins/*/javascripts
6
+ - vendor/plugins/*/app/javascripts
7
+ source_files:
8
+ - app/javascripts/application.js
9
+ - app/javascripts/**/*.js
@@ -0,0 +1,13 @@
1
+ class Sprockets::Railtie < Rails::Railtie
2
+ initializer "sprockets" do |app|
3
+ default_config_file = File.join(File.dirname(__FILE__), 'rails.yml')
4
+ user_config_file = Rails.root.join('config', 'sprockets.yml')
5
+
6
+ config_files = [default_config_file]
7
+ config_files << user_config_file if File.exist?(user_config_file)
8
+
9
+ app.middleware.use Sprockets::Middleware,
10
+ :root => Rails.root,
11
+ :config_files => config_files
12
+ end
13
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-rack
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Brockman
@@ -57,6 +57,9 @@ extra_rdoc_files: []
57
57
 
58
58
  files:
59
59
  - lib/sprockets-rack.rb
60
+ - lib/sprockets-rack/middleware.rb
61
+ - lib/sprockets-rack/rails.yml
62
+ - lib/sprockets-rack/railtie.rb
60
63
  has_rdoc: true
61
64
  homepage: http://github.com/dbrock/sprockets-rack
62
65
  licenses: []