premailer-rails 1.7.0 → 1.8.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 665414165c8702efcbef9842568949b076dfb340
4
- data.tar.gz: d0db56e2bde48b63b36ef13a7734af8571cc24c1
3
+ metadata.gz: 1acf912800a7228a1dcf6b89f5412ee87490f975
4
+ data.tar.gz: 2ab5e6bf63b3d7a0fa974b5495df7919eaeb9d10
5
5
  SHA512:
6
- metadata.gz: 11a390432a6f4b4bdec544d5ef520a74021690a5bec1e937fc2940814b1bebfaae0d56c095d30e8f5baa76fcce080a233329c09d7c56be9e6123335bebb0ee7c
7
- data.tar.gz: 708f338f00b204317d585d9fa632ed499bd7e97c473f0afdb007b36ab9ae7adba51cd4886f4f614da5fd285ffbc60be68c1e75f3d42490ef39c1207db1603b0e
6
+ metadata.gz: feef5aa13b18d39709bf2f9fd931eecff8876a11bf3500199f91c2ba06e15853d60787984425371b51ef4fbc60c555a7b8df38ab0e108e4c4766e4e624fba52b
7
+ data.tar.gz: dc7c3b13551d5445c58998154a342d79f2b4e0d56fd4b909d1264df3d0511e958d03bbd475f98a387c3c8bdec23fcead519c7a60ac150dff7955f78da46bb884
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
+ before_install:
3
+ - gem install bundler
2
4
  cache: bundler
3
5
  script: "bundle exec rspec"
4
6
  rvm:
@@ -7,7 +9,7 @@ rvm:
7
9
  - 1.9.3
8
10
  - ruby-head
9
11
  - jruby-19mode
10
- - rbx-2.1.1
12
+ - rbx-2
11
13
  env:
12
14
  - "ACTION_MAILER_VERSION=3.1.0"
13
15
  - "ACTION_MAILER_VERSION=3.2.0"
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.8.0
4
+
5
+ - `ActionMailer` interceptors are registered after Rails initialization and no
6
+ longer when loading this gem. If you were using this gem outside Rails, you'll
7
+ need to call `Premailer::Rails.register_interceptors` manually.
8
+
3
9
  ## v1.7.0
4
10
 
5
11
  - Register preview hook for the new previewing functionality introduced in
data/README.md CHANGED
@@ -117,6 +117,11 @@ the config `:generate_text_part` to false.
117
117
  Note that the options `:with_html_string` and `:css_string` are used internally
118
118
  by premailer-rails and thus will be overridden.
119
119
 
120
+ If you're using this gem outside of Rails, you'll need to call
121
+ `Premailer::Rails.register_interceptors` manually in order for it to work. This
122
+ is done ideally in some kind of initializer, depending on the framework you're
123
+ using.
124
+
120
125
  ## Usage
121
126
 
122
127
  premailer-rails processes all outgoing emails by default. If you wish to skip
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.0
1
+ 1.8.0
@@ -6,6 +6,7 @@ require 'premailer/rails/css_loaders'
6
6
  require 'premailer/rails/css_helper'
7
7
  require 'premailer/rails/customized_premailer'
8
8
  require 'premailer/rails/hook'
9
+ require 'premailer/rails/railtie' if defined?(Rails)
9
10
 
10
11
  class Premailer
11
12
  module Rails
@@ -16,11 +17,13 @@ class Premailer
16
17
  class << self
17
18
  attr_accessor :config
18
19
  end
19
- end
20
- end
21
20
 
22
- ActionMailer::Base.register_interceptor(Premailer::Rails::Hook)
21
+ def self.register_interceptors
22
+ ActionMailer::Base.register_interceptor(Premailer::Rails::Hook)
23
23
 
24
- if ActionMailer::Base.respond_to?(:register_preview_interceptor)
25
- ActionMailer::Base.register_preview_interceptor(Premailer::Rails::Hook)
24
+ if ActionMailer::Base.respond_to?(:register_preview_interceptor)
25
+ ActionMailer::Base.register_preview_interceptor(Premailer::Rails::Hook)
26
+ end
27
+ end
28
+ end
26
29
  end
@@ -0,0 +1,9 @@
1
+ class Premailer
2
+ module Rails
3
+ class Railtie < ::Rails::Railtie
4
+ config.after_initialize do
5
+ ::Premailer::Rails.register_interceptors
6
+ end
7
+ end
8
+ end
9
+ end
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency 'premailer', '~> 1.7', '>= 1.7.9'
24
24
  s.add_dependency 'actionmailer', '>= 3', '< 5'
25
25
 
26
- s.add_development_dependency 'rspec', '>= 3.0.0.beta1'
26
+ s.add_development_dependency 'rspec', '~> 3.0.0'
27
27
  s.add_development_dependency 'nokogiri'
28
28
  s.add_development_dependency 'hpricot' unless RUBY_PLATFORM == 'java'
29
29
  s.add_development_dependency 'coveralls' if RUBY_ENGINE == 'ruby'
@@ -26,7 +26,7 @@ describe Premailer::Rails::CSSHelper do
26
26
  context 'when HTML contains linked CSS files' do
27
27
  let(:files) { %w[ stylesheets/base.css stylesheets/font.css ] }
28
28
 
29
- it 'should return the content of both files concatenated' do
29
+ it 'returns the content of both files concatenated' do
30
30
  allow(Premailer::Rails::CSSHelper).to \
31
31
  receive(:load_css)
32
32
  .with('http://example.com/stylesheets/base.css')
@@ -43,7 +43,7 @@ describe Premailer::Rails::CSSHelper do
43
43
 
44
44
  describe '#load_css' do
45
45
  context 'when path is a url' do
46
- it 'should load the CSS at the local path' do
46
+ it 'loads the CSS at the local path' do
47
47
  expect_file('public/stylesheets/base.css')
48
48
 
49
49
  load_css('http://example.com/stylesheets/base.css?test')
@@ -51,14 +51,14 @@ describe Premailer::Rails::CSSHelper do
51
51
  end
52
52
 
53
53
  context 'when path is a relative url' do
54
- it 'should load the CSS at the local path' do
54
+ it 'loads the CSS at the local path' do
55
55
  expect_file('public/stylesheets/base.css')
56
56
  load_css('/stylesheets/base.css?test')
57
57
  end
58
58
  end
59
59
 
60
60
  context 'when file is cached' do
61
- it 'should return the cached value' do
61
+ it 'returns the cached value' do
62
62
  cache =
63
63
  Premailer::Rails::CSSHelper.send(:instance_variable_get, '@cache')
64
64
  cache['http://example.com/stylesheets/base.css'] = 'content of base.css'
@@ -69,7 +69,7 @@ describe Premailer::Rails::CSSHelper do
69
69
  end
70
70
 
71
71
  context 'when in development mode' do
72
- it 'should not return cached values' do
72
+ it 'does not return cached values' do
73
73
  cache =
74
74
  Premailer::Rails::CSSHelper.send(:instance_variable_get, '@cache')
75
75
  cache['http://example.com/stylesheets/base.css'] =
@@ -88,7 +88,7 @@ describe Premailer::Rails::CSSHelper do
88
88
  end
89
89
 
90
90
  context 'and a precompiled file exists' do
91
- it 'should return that file' do
91
+ it 'returns that file' do
92
92
  path = '/assets/email-digest.css'
93
93
  content = 'read from file'
94
94
  expect_file("public#{path}", content)
@@ -96,7 +96,7 @@ describe Premailer::Rails::CSSHelper do
96
96
  end
97
97
  end
98
98
 
99
- it 'should return the content of the file compiled by Rails' do
99
+ it 'returns the content of the file compiled by Rails' do
100
100
  expect(Rails.application.assets).to \
101
101
  receive(:find_asset)
102
102
  .with('base.css')
@@ -106,7 +106,7 @@ describe Premailer::Rails::CSSHelper do
106
106
  eq('content of base.css')
107
107
  end
108
108
 
109
- it 'should return same file when path contains file fingerprint' do
109
+ it 'returns same file when path contains file fingerprint' do
110
110
  expect(Rails.application.assets).to \
111
111
  receive(:find_asset)
112
112
  .with('base.css')
@@ -136,19 +136,19 @@ describe Premailer::Rails::CSSHelper do
136
136
  receive(:get).with(uri_satisfaction).and_return(response)
137
137
  end
138
138
 
139
- it 'should request the file' do
139
+ it 'requests the file' do
140
140
  expect(load_css(url)).to eq('content of base.css')
141
141
  end
142
142
 
143
143
  context 'when file url does not include the host' do
144
- it 'should request the file using the asset host as host' do
144
+ it 'requests the file using the asset host as host' do
145
145
  expect(load_css(path)).to eq('content of base.css')
146
146
  end
147
147
 
148
148
  context 'and the asset host uses protocol relative scheme' do
149
149
  let(:asset_host) { '//assets.example.com' }
150
150
 
151
- it 'should request the file using http as the scheme' do
151
+ it 'requests the file using http as the scheme' do
152
152
  expect(load_css(path)).to eq('content of base.css')
153
153
  end
154
154
  end
@@ -157,7 +157,7 @@ describe Premailer::Rails::CSSHelper do
157
157
  end
158
158
 
159
159
  context 'when static stylesheets are used' do
160
- it 'should return the content of the static file' do
160
+ it 'returns the content of the static file' do
161
161
  content = 'content of base.css'
162
162
  expect_file('public/stylesheets/base.css', content)
163
163
  loaded_content = load_css('http://example.com/stylesheets/base.css')
@@ -1,13 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'ActionMailer::Base.register_interceptor' do
4
- it 'registers interceptor' do
4
+ it 'registers interceptors' do
5
5
  expect(ActionMailer::Base).to \
6
6
  receive(:register_interceptor).with(Premailer::Rails::Hook)
7
- load 'premailer/rails.rb'
8
- end
9
-
10
- it 'registers preview interceptor' do
11
7
  expect(ActionMailer::Base).to \
12
8
  receive(:register_preview_interceptor).with(Premailer::Rails::Hook)
13
9
  load 'premailer/rails.rb'
@@ -20,8 +20,3 @@ require 'support/fixtures/html'
20
20
 
21
21
  require 'hpricot' unless RUBY_PLATFORM == 'java'
22
22
  require 'nokogiri'
23
-
24
- RSpec.configure do |config|
25
- config.raise_errors_for_deprecations!
26
- config.expect_with(:rspec) { |c| c.syntax = :expect }
27
- end
@@ -25,6 +25,18 @@ module Rails
25
25
  end
26
26
  end
27
27
 
28
+ class Railtie
29
+ class Configuration
30
+ def after_initialize
31
+ yield
32
+ end
33
+ end
34
+
35
+ def self.config
36
+ Configuration.new
37
+ end
38
+ end
39
+
28
40
  def env
29
41
  Env
30
42
  end
@@ -14,17 +14,17 @@ describe Premailer::Rails::CSSLoaders::AssetPipelineLoader do
14
14
 
15
15
  context "when asset file path contains prefix" do
16
16
  let(:asset) { '/assets/application.css' }
17
- it { should == 'application.css' }
17
+ it { is_expected.to eq('application.css') }
18
18
  end
19
19
 
20
20
  context "when asset file path contains fingerprint" do
21
21
  let(:asset) { 'application-6776f581a4329e299531e1d52aa59832.css' }
22
- it { should == 'application.css' }
22
+ it { is_expected.to eq('application.css') }
23
23
  end
24
24
 
25
25
  context "when asset file page contains numbers, but not a fingerprint" do
26
26
  let(:asset) { 'test/20130708152545-foo-bar.css' }
27
- it { should == "test/20130708152545-foo-bar.css" }
27
+ it { is_expected.to eq("test/20130708152545-foo-bar.css") }
28
28
  end
29
29
  end
30
30
  end
@@ -8,7 +8,7 @@ describe Premailer::Rails::CustomizedPremailer do
8
8
  before { allow(Premailer::Adapter).to receive(:use).and_return(adapter) }
9
9
 
10
10
  describe '#to_plain_text' do
11
- it 'should include the text from the HTML part' do
11
+ it 'includes the text from the HTML part' do
12
12
  premailer =
13
13
  Premailer::Rails::CustomizedPremailer
14
14
  .new(Fixtures::Message::HTML_PART)
@@ -21,7 +21,7 @@ describe Premailer::Rails::CustomizedPremailer do
21
21
  let(:regex) { %r{<p style=("|')color: ?red;?\1>} }
22
22
 
23
23
  context 'when inline CSS block present' do
24
- it 'should return the HTML with the CSS inlined' do
24
+ it 'returns the HTML with the CSS inlined' do
25
25
  allow(Premailer::Rails::CSSHelper).to \
26
26
  receive(:css_for_doc).and_return('p { color: red; }')
27
27
  html = Fixtures::Message::HTML_PART
@@ -31,7 +31,7 @@ describe Premailer::Rails::CustomizedPremailer do
31
31
  end
32
32
 
33
33
  context 'when CSS is loaded externally' do
34
- it 'should return the HTML with the CSS inlined' do
34
+ it 'returns the HTML with the CSS inlined' do
35
35
  html = Fixtures::Message::HTML_PART_WITH_CSS
36
36
  premailer = Premailer::Rails::CustomizedPremailer.new(html)
37
37
  expect(premailer.to_inline_css).to match(regex)
@@ -39,7 +39,7 @@ describe Premailer::Rails::CustomizedPremailer do
39
39
  end
40
40
 
41
41
  context 'when HTML contains unicode' do
42
- it 'should not mess those up' do
42
+ it 'does not mess those up' do
43
43
  html = Fixtures::Message::HTML_PART_WITH_UNICODE
44
44
  premailer = Premailer::Rails::CustomizedPremailer.new(html)
45
45
  expect(premailer.to_inline_css).to \
@@ -51,18 +51,18 @@ describe Premailer::Rails::CustomizedPremailer do
51
51
  end
52
52
 
53
53
  describe '.new' do
54
- it 'should extract the CSS' do
54
+ it 'extracts the CSS' do
55
55
  expect(Premailer::Rails::CSSHelper).to receive(:css_for_doc)
56
56
  Premailer::Rails::CustomizedPremailer.new('some html')
57
57
  end
58
58
 
59
- it 'should pass on the configs' do
59
+ it 'passes on the configs' do
60
60
  Premailer::Rails.config.merge!(foo: :bar)
61
61
  premailer = Premailer::Rails::CustomizedPremailer.new('some html')
62
62
  expect(premailer.instance_variable_get(:'@options')[:foo]).to eq(:bar)
63
63
  end
64
64
 
65
- it 'should not allow to override with_html_string' do
65
+ it 'does not allow to override with_html_string' do
66
66
  Premailer::Rails.config.merge!(with_html_string: false)
67
67
  premailer = Premailer::Rails::CustomizedPremailer.new('some html')
68
68
  options = premailer.instance_variable_get(:'@options')
@@ -4,8 +4,16 @@ describe Premailer::Rails do
4
4
  describe '#config' do
5
5
  subject { Premailer::Rails.config }
6
6
  context 'when set' do
7
- before { Premailer::Rails.config = { foo: :bar } }
8
- it { should == { foo: :bar } }
7
+ around do |example|
8
+ begin
9
+ default_config = described_class.config
10
+ described_class.config = { foo: :bar }
11
+ example.run
12
+ ensure
13
+ described_class.config = default_config
14
+ end
15
+ end
16
+ it { is_expected.to eq(foo: :bar) }
9
17
  end
10
18
  end
11
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: premailer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipe Fatio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-07 00:00:00.000000000 Z
11
+ date: 2014-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: premailer
@@ -54,16 +54,16 @@ dependencies:
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
57
+ - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: 3.0.0.beta1
59
+ version: 3.0.0
60
60
  type: :development
61
61
  prerelease: false
62
62
  version_requirements: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: 3.0.0.beta1
66
+ version: 3.0.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: nokogiri
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +151,7 @@ files:
151
151
  - lib/premailer/rails/css_loaders/network_loader.rb
152
152
  - lib/premailer/rails/customized_premailer.rb
153
153
  - lib/premailer/rails/hook.rb
154
+ - lib/premailer/rails/railtie.rb
154
155
  - lib/premailer/rails/version.rb
155
156
  - premailer-rails.gemspec
156
157
  - spec/integration/css_helper_spec.rb
@@ -183,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
184
  version: '0'
184
185
  requirements: []
185
186
  rubyforge_project:
186
- rubygems_version: 2.2.0
187
+ rubygems_version: 2.2.2
187
188
  signing_key:
188
189
  specification_version: 4
189
190
  summary: Easily create styled HTML emails in Rails.
@@ -199,4 +200,3 @@ test_files:
199
200
  - spec/unit/css_loaders/asset_pipeline_loader_spec.rb
200
201
  - spec/unit/customized_premailer_spec.rb
201
202
  - spec/unit/premailer_rails_spec.rb
202
- has_rdoc: