inline_styles_mailer 0.0.3 → 0.0.4

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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.0.4
2
+
3
+ Smarter location of CSS files and more explicit override if you need it.
4
+
1
5
  ## v0.0.3
2
6
 
3
7
  Now copes with .sass and .css files (as well as .scss).
data/README.md CHANGED
@@ -29,28 +29,33 @@ class FooMailer < ActionMailer::Base
29
29
  end
30
30
  ```
31
31
 
32
- If you have a CSS file <code>app/assets/stylesheets/_foo_mailer.css.scss</code> then it will get automatically applied to the mail using the inline_styles gem. That name (<code>_foo_mailer.css.scss</code>) is based on the mailer class name, FooMailer.
32
+ If you have a CSS file <code>app/assets/stylesheets/_foo_mailer*</code> (where * can be .css, .css.scss or .css.sass) then it will get automatically applied to the mail using the inline_styles gem. That name (<code>_foo_mailer</code>) is based on your mailer class name, e.g. FooMailer. If you have more than one file matching that pattern then it will use them all.
33
33
 
34
- Want to use a different file? Declare <code>use_stylesheet</code>:
34
+ It will use one of three preprocessing methods based on the filename:
35
+
36
+ * [.scss](http://sass-lang.com/)
37
+ * [.sass](http://sass-lang.com/)
38
+ * anything else (e.g. .css) no preprocessing at all
39
+
40
+ Want to use a different css file? Declare <code>use_stylesheet</code>:
35
41
 
36
42
  ```ruby
37
43
  class FooMailer < ActionMailer::Base
38
44
  include InlineStylesMailer
39
- use_stylesheet '_bar'
40
-
41
-
42
- def foo(email)
43
- mail(:to => email, :subject => "Foo foo!")
44
- end
45
-
45
+ use_stylesheet '_bar.css.sass'
46
+ ...
46
47
  end
47
48
  ```
48
49
 
49
- The location of that file (<code>app/assets/stylesheets/</code>) is fixed. It will use one of three preprocessing methods based on the filename:
50
+ You can use an array of stylesheets if you like. Don't keep your stylesheets in <code>app/assets/stylesheets</code>? Declare <code>stylesheet_path</code>:
50
51
 
51
- * .scss
52
- * .sass
53
- * .css (i.e. no preprocessing at all)
52
+ ```ruby
53
+ class FooMailer < ActionMailer::Base
54
+ include InlineStylesMailer
55
+ stylesheet_path 'public/stylesheets'
56
+ ...
57
+ end
58
+ ```
54
59
 
55
60
  ## Development
56
61
 
@@ -14,8 +14,8 @@ module InlineStylesMailer
14
14
  @stylesheets = Array(stylesheets)
15
15
  end
16
16
 
17
- def locate_css_file(stylesheet)
18
- Rails.root.join("app", "assets", "stylesheets", "#{stylesheet}.css.scss")
17
+ def stylesheet_path(path)
18
+ @stylesheet_path = path
19
19
  end
20
20
 
21
21
  def locate_template(name)
@@ -23,10 +23,10 @@ module InlineStylesMailer
23
23
  end
24
24
 
25
25
  def css_content
26
- @stylesheets ||= ["_#{self.name.underscore}"]
26
+ @stylesheets ||= ["_#{self.name.underscore}*"]
27
+ @stylesheet_path ||= File.join("app", "assets", "stylesheets")
27
28
  @css_content ||= @stylesheets.map {|stylesheet|
28
- file = locate_css_file(stylesheet)
29
- if File.exist?(file)
29
+ Dir[Rails.root.join(@stylesheet_path, "#{stylesheet}")].map {|file|
30
30
  case file
31
31
  when /\.scss$/
32
32
  Sass::Engine.new(File.read(file), syntax: :scss).render
@@ -36,10 +36,9 @@ module InlineStylesMailer
36
36
  # Plain old CSS? Let's assume it is.
37
37
  File.read(file)
38
38
  end
39
- else
40
- nil
41
- end
42
- }.compact.join
39
+ }.join("\n")
40
+ }.compact.join("\n")
41
+ @css_content
43
42
  end
44
43
 
45
44
  def locate_layout
@@ -1,3 +1,3 @@
1
1
  module InlineStylesMailer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -2,5 +2,5 @@ body {
2
2
  background: yellow;
3
3
  }
4
4
  body p {
5
- color: red;
5
+ color: blue;
6
6
  }
@@ -1,6 +1,6 @@
1
1
  body
2
2
  :background yellow
3
3
  p
4
- :color red
4
+ :color green
5
5
 
6
6
 
@@ -0,0 +1,6 @@
1
+ body {
2
+ background: yellow;
3
+ p {
4
+ color: orange;
5
+ }
6
+ }
@@ -6,40 +6,46 @@ describe InlineStylesMailer do
6
6
  before(:each) do
7
7
  FooMailer.reset
8
8
  Rails.should_receive(:root).any_number_of_times.and_return(Pathname.new(File.join("spec", "fixtures")))
9
+ FooMailer.stylesheet_path "assets/stylesheets"
10
+ end
11
+
12
+ context "Default CSS file" do
13
+ it "should inline the CSS" do
14
+ mail = FooMailer.foo
15
+ mail.body.should =~ /<p style="color: red;">Testing foo\.<\/p>/
16
+ mail.body.should =~ /<body style="background: yellow;">/
17
+ end
9
18
  end
10
19
 
11
20
  context "SCSS preprocessing" do
12
21
  before(:each) do
13
- file = File.join("spec", "fixtures", "assets", "stylesheets", "_foo_mailer.css.scss")
14
- FooMailer.should_receive(:locate_css_file).and_return(file)
22
+ FooMailer.use_stylesheet("_override.css.scss")
15
23
  end
16
24
  it "should inline the CSS" do
17
25
  mail = FooMailer.foo
18
- mail.body.should =~ /<p style="color: red;">Testing foo\.<\/p>/
26
+ mail.body.should =~ /<p style="color: orange;">Testing foo\.<\/p>/
19
27
  mail.body.should =~ /<body style="background: yellow;">/
20
28
  end
21
29
  end
22
30
 
23
31
  context "SASS preprocessing" do
24
32
  before(:each) do
25
- file = File.join("spec", "fixtures", "assets", "stylesheets", "_foo_mailer.css.sass")
26
- FooMailer.should_receive(:locate_css_file).and_return(file)
33
+ FooMailer.use_stylesheet("_override.css.sass")
27
34
  end
28
35
  it "should inline the CSS" do
29
36
  mail = FooMailer.foo
30
- mail.body.should =~ /<p style="color: red;">Testing foo\.<\/p>/
37
+ mail.body.should =~ /<p style="color: green;">Testing foo\.<\/p>/
31
38
  mail.body.should =~ /<body style="background: yellow;">/
32
39
  end
33
40
  end
34
41
 
35
42
  context "No preprocessing (plain old CSS)" do
36
43
  before(:each) do
37
- file = File.join("spec", "fixtures", "assets", "stylesheets", "_foo_mailer.css")
38
- FooMailer.should_receive(:locate_css_file).and_return(file)
44
+ FooMailer.use_stylesheet("_override.css")
39
45
  end
40
46
  it "should inline the CSS" do
41
47
  mail = FooMailer.foo
42
- mail.body.should =~ /<p style="color: red;">Testing foo\.<\/p>/
48
+ mail.body.should =~ /<p style="color: blue;">Testing foo\.<\/p>/
43
49
  mail.body.should =~ /<body style="background: yellow;">/
44
50
  end
45
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inline_styles_mailer
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:
@@ -13,7 +13,7 @@ date: 2011-12-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70232207558180 !ruby/object:Gem::Requirement
16
+ requirement: &70249576618260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70232207558180
24
+ version_requirements: *70249576618260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: inline_styles
27
- requirement: &70232207556740 !ruby/object:Gem::Requirement
27
+ requirement: &70249576617160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70232207556740
35
+ version_requirements: *70249576617160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &70232207555480 !ruby/object:Gem::Requirement
38
+ requirement: &70249576615600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.1'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70232207555480
46
+ version_requirements: *70249576615600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sass-rails
49
- requirement: &70232207554600 !ruby/object:Gem::Requirement
49
+ requirement: &70249576614380 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70232207554600
57
+ version_requirements: *70249576614380
58
58
  description: Convenient use of inline_styles gem with Rails 3.1
59
59
  email:
60
60
  - bill@logicalcobwebs.com
@@ -73,9 +73,10 @@ files:
73
73
  - inline_styles_mailer.gemspec
74
74
  - lib/inline_styles_mailer.rb
75
75
  - lib/inline_styles_mailer/version.rb
76
- - spec/fixtures/assets/stylesheets/_foo_mailer.css
77
- - spec/fixtures/assets/stylesheets/_foo_mailer.css.sass
78
76
  - spec/fixtures/assets/stylesheets/_foo_mailer.css.scss
77
+ - spec/fixtures/assets/stylesheets/_override.css
78
+ - spec/fixtures/assets/stylesheets/_override.css.sass
79
+ - spec/fixtures/assets/stylesheets/_override.css.scss
79
80
  - spec/fixtures/layout.html.erb
80
81
  - spec/fixtures/views/foo_mailer/foo.html
81
82
  - spec/fixtures/views/layouts/mailer.html.erb
@@ -96,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
97
  version: '0'
97
98
  segments:
98
99
  - 0
99
- hash: 1465499495019503480
100
+ hash: 1023047105202860642
100
101
  required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  none: false
102
103
  requirements:
@@ -105,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
106
  version: '0'
106
107
  segments:
107
108
  - 0
108
- hash: 1465499495019503480
109
+ hash: 1023047105202860642
109
110
  requirements: []
110
111
  rubyforge_project: inline_styles_mailer
111
112
  rubygems_version: 1.8.10
@@ -113,9 +114,10 @@ signing_key:
113
114
  specification_version: 3
114
115
  summary: Convenient use of inline_styles gem with Rails 3.1
115
116
  test_files:
116
- - spec/fixtures/assets/stylesheets/_foo_mailer.css
117
- - spec/fixtures/assets/stylesheets/_foo_mailer.css.sass
118
117
  - spec/fixtures/assets/stylesheets/_foo_mailer.css.scss
118
+ - spec/fixtures/assets/stylesheets/_override.css
119
+ - spec/fixtures/assets/stylesheets/_override.css.sass
120
+ - spec/fixtures/assets/stylesheets/_override.css.scss
119
121
  - spec/fixtures/layout.html.erb
120
122
  - spec/fixtures/views/foo_mailer/foo.html
121
123
  - spec/fixtures/views/layouts/mailer.html.erb