lionel 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -12,6 +12,16 @@ And then execute:
12
12
 
13
13
  $ bundle
14
14
 
15
+ ### Installation - Middleman
16
+
17
+ If you want to serve/build assets from an engine, add this to your config.rb
18
+
19
+ activate :lionel do |l|
20
+ l.engines_with_images << "#{engine_name}"
21
+ end
22
+
23
+ (see the [demo app](https://github.com/gkop/lionel-middleman-demo/blob/master/config.rb) for example)
24
+
15
25
  ## Known Supported Engines
16
26
 
17
27
  * [jquery-rails](https://rubygems.org/gems/jquery-rails)
@@ -0,0 +1,79 @@
1
+ module Lionel
2
+ module Extensions
3
+ module Middleman
4
+ class Options < Struct.new(:engines_with_images); end
5
+
6
+ class << self
7
+ def registered(app, &block)
8
+ options = Options.new([])
9
+ yield options if block_given?
10
+ # Let's run our images/ through sprockets just as we do js and css,
11
+ # so we can serve images packaged in engines
12
+
13
+ # Inspired by https://github.com/Vasfed/middleman/commit/c9b4edcc0a3fb9fd4da43af78cedd50351479205
14
+ # This may be CRUFT if similar behavior is implemented by middleman
15
+ # itself
16
+ try_paths = [
17
+ %w{ assets },
18
+ %w{ app },
19
+ %w{ app assets },
20
+ %w{ vendor },
21
+ %w{ vendor assets },
22
+ %w{ lib },
23
+ %w{ lib assets }
24
+ ].inject([]) do |sum, v|
25
+ sum + [File.join(v, 'images')]
26
+ end
27
+
28
+ app.after_configuration do
29
+ ::Middleman.rubygems_latest_specs.select { |g|
30
+ options.engines_with_images.include?(g.name)
31
+ }.map(&:full_gem_path).each do |root_path|
32
+ try_paths.map {|p| File.join(root_path, p) }.
33
+ select {|p| File.directory?(p) }.
34
+ each {|path| sprockets.append_path(path) }
35
+ end
36
+
37
+ # Add our app images to sprockets, too
38
+ sprockets.append_path("#{root}/#{source}/#{images_dir}")
39
+
40
+ # Intercept requests to /images and pass to sprockets
41
+ our_sprockets = sprockets
42
+ map("/#{images_dir}") { run our_sprockets }
43
+ end
44
+
45
+ app.build_config do
46
+ # Copy over engined images to build/images/
47
+ FileUtils.mkdir_p "#{root}/build/images"
48
+ ::Middleman.rubygems_latest_specs.select { |g|
49
+ options.engines_with_images.include?(g.name)
50
+ }.map(&:full_gem_path).each do |root_path|
51
+ try_paths.map {|p| File.join(root_path, p) }.
52
+ select {|p| File.directory?(p) }.
53
+ each do |path|
54
+ FileUtils.cp_r Dir[path+"/*"], "#{root}/build/images"
55
+ end
56
+ end
57
+ end
58
+
59
+ # ugly hack around current_path being nil when executing path helpers
60
+ if defined? ::Middleman::Extensions::RelativeAssets
61
+ ::Middleman::Extensions::RelativeAssets::InstanceMethods.module_eval do
62
+ alias_method :old_asset_url, :asset_url
63
+
64
+ def asset_url(path, prefix="")
65
+ old_asset_url(path, prefix)
66
+ rescue Exception => ex
67
+ "#{prefix}/#{path}"
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ alias :included :registered
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ ::Middleman::Extensions.register(:lionel, Lionel::Extensions::Middleman)
@@ -1 +1,2 @@
1
1
  require_relative "rails"
2
+ require_relative "extensions/middleman" if defined? Middleman
@@ -1,3 +1,3 @@
1
1
  module Lionel
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lionel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-21 00:00:00.000000000 Z
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nullobject
@@ -60,6 +60,7 @@ files:
60
60
  - README.md
61
61
  - Rakefile
62
62
  - lib/lionel.rb
63
+ - lib/lionel/extensions/middleman.rb
63
64
  - lib/lionel/lionel.rb
64
65
  - lib/lionel/rails.rb
65
66
  - lib/lionel/version.rb