mjml-rails 4.3.1 → 4.5.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
  SHA256:
3
- metadata.gz: b02f5e2cbabe0dd1c593d09018c44e1a4476dd24e39841714a11ed817defdc64
4
- data.tar.gz: c248937b61b38ec294fdeffe7bbbf41da470f3157b664697c9def79f543ecaad
3
+ metadata.gz: 128c814314ffe1c725a9d46d0537c161a45098650f67cf063cf0e27325cd11d2
4
+ data.tar.gz: b23564a1cf6b824359019f60bf08cb1f97d6d7584f1e58a2220fc672a4dea77c
5
5
  SHA512:
6
- metadata.gz: c192ba7708cbf3ec3803bf01a402c576012440c9ab3db13eddf20474381b5c8441d03053ba21b521af053a9c193fc5b22eacfbc957f78771629fbf8a9ec99cdc
7
- data.tar.gz: c541acdfc42a6f538d7a53a9409e88d4fa5a0241b94bd9969e1431450e573e349b4c4e82512c6d55768d9a142b238d5513cd5555c3b8ffa19b3b84ede3f532e4
6
+ metadata.gz: 9c56d2b1b80bcb2f7ef36cf8e927d135fbdc26fd67f7ac2db52ece28065d1cb98010c89f9abae9176c7861ef3ab65ae099c8cb98ecabf371d06c42cff53f141d
7
+ data.tar.gz: 1eea404a1e315166fd132ec37b76257d4789f030af4853992067230cda800875861b68fde85a358e803ff283d15cb1d14c88ae778dd49e5f27f01109faf0e787
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -34,7 +34,7 @@ And the partial:
34
34
 
35
35
  * Notice you can use ERB and partials inside the template.
36
36
 
37
- Your `user_mailer.rb` might look like this::
37
+ Your `user_mailer.rb` might look like this:
38
38
 
39
39
  ```ruby
40
40
  # ./app/mailers/user_mailer.rb
@@ -48,6 +48,10 @@ class UserMailer < ActionMailer::Base
48
48
  end
49
49
  ```
50
50
 
51
+ ## Example application
52
+
53
+ * [MJML with Rails 6](https://github.com/dyanagi/example_mjml_rails): Renders HTML emails with MJML layout, view, and partial.
54
+
51
55
  ## Installation
52
56
 
53
57
  Add it to your Gemfile.
@@ -62,13 +66,19 @@ Run the following command to install it:
62
66
  bundle install
63
67
  ```
64
68
 
65
- Install the MJML parser (optional -g to install it globally):
69
+ Add the MJML parser to your project with your favourite package manager:
66
70
 
67
71
  ```console
68
- npm install -g mjml
72
+ # with npm
73
+ npm install mjml
74
+
75
+ # with yarn
76
+ yarn add mjml
69
77
  ```
70
78
 
71
- Note that you'll need at least Node.js version 6 for MJML to function properly.
79
+ MJML-Rails falls back to a global installation of MJML but it is strongly recommended to add MJML directly to your project.
80
+
81
+ You'll need at least Node.js version 6 for MJML to function properly.
72
82
 
73
83
  If you're using ```:haml``` or any other Rails template language, create an initializer to set it up:
74
84
 
@@ -85,23 +95,29 @@ If there are configurations you'd like change:
85
95
  - render errors: defaults to `true` (errors raised)
86
96
  - minify: defaults to `false` (not minified)
87
97
  - beautify: defaults to `true` (beautified)
98
+ - validation_level: defaults to `strict` (abort on any template error, see [MJML validation documentation](https://github.com/mjmlio/mjml/tree/master/packages/mjml-validator#validating-mjml) for possible values)
88
99
 
89
100
  ```ruby
101
+ # config/initializers/mjml.rb
90
102
  Mjml.setup do |config|
91
- # set to `false` to ignore errors silently
92
- config.raise_render_exception = true
103
+ # ignore errors silently
104
+ config.raise_render_exception = false
93
105
 
94
106
  # optimize the size of your email
95
107
  config.beautify = false
96
108
  config.minify = true
109
+
110
+ # render illformed MJML templates, not recommended
111
+ config.validation_level = "soft"
97
112
  end
98
113
  ```
99
114
 
100
115
  If you’d like to specify a different MJML binary to run other than `4.`:
101
116
 
102
117
  ```ruby
118
+ # config/initializers/mjml.rb
103
119
  Mjml.setup do |config|
104
- config.mjml_binary_version_supported = 3.3.5
120
+ config.mjml_binary_version_supported = "3.3.5"
105
121
  end
106
122
  # If you set a different MJML binary version, you need to re-discover the binary
107
123
  Mjml::BIN = Mjml.discover_mjml_bin
@@ -151,12 +167,14 @@ class MyMailer < ActionMailer::Base
151
167
  @recipient = user
152
168
 
153
169
  mail(to: user.email, from: "app@example.com") do |format|
154
- format.html
170
+ format.html # This will look for "default.html.erb" and then "default.html.mjml"
155
171
  end
156
172
  end
157
173
  end
158
174
  ```
159
175
 
176
+ Note: If `default.html.erb` exists, email will be rendered as ERB, and MJML tags will not be compiled.
177
+
160
178
  Email layout:
161
179
  ```html
162
180
  <!-- views/layouts/default.html.mjml -->
@@ -169,7 +187,7 @@ Email layout:
169
187
 
170
188
  Email view:
171
189
  ```html
172
- <!-- views/my_mailer/foo_bar.html.erb -->
190
+ <!-- views/my_mailer/foo_bar.html.mjml (or foo_bar.html.erb) -->
173
191
  <%= render partial: "to" %>
174
192
 
175
193
  <mj-section>
@@ -183,7 +201,7 @@ Email view:
183
201
 
184
202
  Email partial:
185
203
  ```html
186
- <!-- views/my_mailer/_to.html.erb -->
204
+ <!-- views/my_mailer/_to.html.mjml (or _to.html.erb) -->
187
205
  <mj-section>
188
206
  <mj-column>
189
207
  <mj-text>
@@ -251,7 +269,7 @@ Next you'll need to setup a `package.json` file in the root, something like this
251
269
  "test": "test"
252
270
  },
253
271
  "dependencies": {
254
- "mjml": "^4.0.0",
272
+ "mjml": "^4.0.0"
255
273
  },
256
274
  "repository": {
257
275
  "type": "git",
@@ -4,9 +4,10 @@ require "action_view/template"
4
4
  require "mjml/mjmltemplate"
5
5
  require "mjml/railtie"
6
6
  require "rubygems"
7
+ require "open3"
7
8
 
8
9
  module Mjml
9
- mattr_accessor :template_language, :raise_render_exception, :mjml_binary_version_supported, :mjml_binary_error_string, :beautify, :minify
10
+ mattr_accessor :template_language, :raise_render_exception, :mjml_binary_version_supported, :mjml_binary_error_string, :beautify, :minify, :validation_level
10
11
 
11
12
  @@template_language = :erb
12
13
  @@raise_render_exception = true
@@ -14,34 +15,50 @@ module Mjml
14
15
  @@mjml_binary_error_string = "Couldn't find the MJML #{Mjml.mjml_binary_version_supported} binary.. have you run $ npm install mjml?"
15
16
  @@beautify = true
16
17
  @@minify = false
18
+ @@validation_level = "strict"
17
19
 
18
20
  def self.check_version(bin)
19
- IO.popen([bin, '--version']) { |io| io.read.include?("mjml-core: #{Mjml.mjml_binary_version_supported}") }
20
- rescue
21
+ stdout, _, status = run_mjml('--version', mjml_bin: bin)
22
+ status.success? && stdout.include?("mjml-core: #{Mjml.mjml_binary_version_supported}")
23
+ rescue StandardError
21
24
  false
22
25
  end
23
26
 
27
+ def self.run_mjml(args, mjml_bin: nil)
28
+ mjml_bin ||= BIN
29
+
30
+ Open3.capture3("#{mjml_bin} #{args}")
31
+ end
32
+
24
33
  def self.discover_mjml_bin
25
- # Check for a global install of MJML binary
26
- mjml_bin = 'mjml'
27
- return mjml_bin if check_version(mjml_bin)
28
-
29
- # Check for a local install of MJML binary
30
- installer_path = bin_path_from('npm') || bin_path_from('yarn')
31
- unless installer_path
32
- puts Mjml.mjml_binary_error_string
33
- return nil
34
+ # Check for local install of MJML with yarn
35
+ yarn_bin = `which yarn`.chomp
36
+ if yarn_bin.present?
37
+ mjml_bin = "#{yarn_bin} run mjml"
38
+ return mjml_bin if check_version(mjml_bin)
34
39
  end
35
40
 
36
- mjml_bin = File.join(installer_path, 'mjml')
37
- return mjml_bin if check_version(mjml_bin)
41
+ # Check for a local install of MJML with npm
42
+ npm_bin = `which npm`.chomp
43
+ if npm_bin.present? && (installer_path = bin_path_from(npm_bin)).present?
44
+ mjml_bin = File.join(installer_path, 'mjml')
45
+ return mjml_bin if check_version(mjml_bin)
46
+ end
47
+
48
+ # Check for a global install of MJML
49
+ mjml_bin = `which mjml`.chomp
50
+ return mjml_bin if mjml_bin.present? && check_version(mjml_bin)
38
51
 
39
52
  puts Mjml.mjml_binary_error_string
40
53
  nil
41
54
  end
42
55
 
43
56
  def self.bin_path_from(package_manager)
44
- `#{package_manager} bin`.chomp
57
+ stdout, _, status = Open3.capture3("#{package_manager} bin")
58
+
59
+ return unless status.success?
60
+
61
+ stdout.chomp
45
62
  rescue Errno::ENOENT # package manager is not installed
46
63
  nil
47
64
  end
@@ -1,5 +1,3 @@
1
- require 'open3'
2
-
3
1
  module Mjml
4
2
  class Parser
5
3
  class ParseError < StandardError; end
@@ -22,7 +20,7 @@ module Mjml
22
20
  file.write(input)
23
21
  file # return tempfile from block so #unlink works later
24
22
  end
25
- run(in_tmp_file.path, Mjml.beautify, Mjml.minify)
23
+ run(in_tmp_file.path, Mjml.beautify, Mjml.minify, Mjml.validation_level)
26
24
  rescue
27
25
  raise if Mjml.raise_render_exception
28
26
  ""
@@ -33,11 +31,12 @@ module Mjml
33
31
  # Exec mjml command
34
32
  #
35
33
  # @return [String] The result as string
36
- def run(in_tmp_file, beautify=true, minify=false)
34
+ def run(in_tmp_file, beautify=true, minify=false, validation_level="strict")
37
35
  Tempfile.create(["out", ".html"]) do |out_tmp_file|
38
- command = "#{mjml_bin} -r #{in_tmp_file} -o #{out_tmp_file.path} --config.beautify #{beautify} --config.minify #{minify}"
39
- _, _, stderr, _ = Open3.popen3(command)
40
- raise ParseError.new(stderr.read.chomp) unless stderr.eof?
36
+ command = "-r #{in_tmp_file} -o #{out_tmp_file.path} --config.beautify #{beautify} --config.minify #{minify} --config.validationLevel #{validation_level}"
37
+ _, stderr, status = Mjml.run_mjml(command)
38
+ raise ParseError.new(stderr.chomp) unless status.success?
39
+ Mjml.logger.warn(stderr.chomp) unless stderr.blank?
41
40
  out_tmp_file.read
42
41
  end
43
42
  end
@@ -1,4 +1,4 @@
1
1
  module Mjml
2
2
  # Version number no longer matches MJML.io version
3
- VERSION = "4.3.1"
3
+ VERSION = "4.5.0"
4
4
  end
@@ -13,6 +13,15 @@ class NotifierMailer < ActionMailer::Base
13
13
  format.html
14
14
  end
15
15
  end
16
+
17
+ def invalid_template(recipient)
18
+ @recipient = recipient
19
+
20
+ mail(to: @recipient, from: "app@example.com") do |format|
21
+ format.html
22
+ format.text
23
+ end
24
+ end
16
25
  end
17
26
 
18
27
  class NoLayoutMailer < ActionMailer::Base
@@ -58,6 +67,22 @@ class NotifierMailerTest < ActiveSupport::TestCase
58
67
  assert email.text_part.body.match(/We inform you about something/)
59
68
  assert email.text_part.body.match(%r{Please visit https://www.example.com})
60
69
  end
70
+
71
+ test "Invalid template raises error with validation level strict" do
72
+ with_settings(validation_level: 'strict') do
73
+ email = NotifierMailer.invalid_template("user@example.com")
74
+ assert_raise(ActionView::Template::Error) { email.html_part.body.to_s }
75
+ end
76
+ end
77
+
78
+ test "Invalid template gets compiled with validation level soft" do
79
+ with_settings(validation_level: 'soft') do
80
+ email = NotifierMailer.invalid_template("user@example.com")
81
+ assert email.text_part.body.match(/This is valid/)
82
+ assert email.html_part.body.match(/This is valid/)
83
+ refute email.html_part.body.match(/This is invalid/)
84
+ end
85
+ end
61
86
  end
62
87
 
63
88
  class NotifierMailerTest < ActiveSupport::TestCase
@@ -13,58 +13,52 @@ describe Mjml::Parser do
13
13
  parser.stubs(:run).raises(error)
14
14
  end
15
15
 
16
- describe 'when render exception raising is enabled' do
17
- before do
18
- Mjml.setup do |config|
19
- config.raise_render_exception = true
20
- end
21
- end
22
-
23
- it 'raises exception' do
24
- -> { parser.render }.must_raise(custom_error_class, error.message)
16
+ it 'raises exception with render exception enabled' do
17
+ with_settings(raise_render_exception: true) do
18
+ err = expect { parser.render }.must_raise(custom_error_class)
19
+ expect(err.message).must_equal error.message
25
20
  end
26
21
  end
27
22
 
28
- describe 'when render exception raising is disabled' do
29
- before do
30
- Mjml.setup do |config|
31
- config.raise_render_exception = false
32
- end
33
- end
34
-
35
- it 'returns empty string' do
36
- parser.render.must_equal ''
23
+ it 'returns empty string with exception raising disabled' do
24
+ with_settings(raise_render_exception: false) do
25
+ expect(parser.render).must_equal ''
37
26
  end
38
27
  end
39
28
  end
40
29
 
41
- describe 'can read beautify and minify configs' do
42
- it 'use defaults if no config is set' do
43
- expect(Mjml.beautify).equal?(true);
44
- expect(Mjml.minify).equal?(false);
30
+ describe 'can read beautify, minify, and validation_level configs' do
31
+ it 'uses defaults if no config is set' do
32
+ expect(Mjml.beautify).must_equal(true)
33
+ expect(Mjml.minify).must_equal(false)
34
+ expect(Mjml.validation_level).must_equal('strict')
45
35
  end
46
36
 
47
- it 'use setup config' do
37
+ it 'uses setup config' do
48
38
  Mjml.setup do |config|
49
39
  config.beautify = false
50
40
  config.minify = true
41
+ config.validation_level = 'soft'
51
42
  end
52
43
 
53
- expect(Mjml.beautify).equal?(false);
54
- expect(Mjml.minify).equal?(true);
44
+ expect(Mjml.beautify).must_equal(false)
45
+ expect(Mjml.minify).must_equal(true)
46
+ expect(Mjml.validation_level).must_equal('soft')
47
+
48
+ Mjml.setup do |config|
49
+ config.beautify = true
50
+ config.minify = false
51
+ config.validation_level = 'strict'
52
+ end
55
53
  end
56
54
  end
57
55
  end
58
56
 
59
57
  describe '#run' do
60
- describe 'when shell command is failed' do
61
- let(:error) { 'shell error' }
62
- let(:stderr) { mock('stderr', eof?: false, read: error) }
63
-
64
- before { Open3.stubs(popen3: [nil, nil, stderr, nil]) }
65
-
58
+ describe 'when shell command failed' do
66
59
  it 'raises exception' do
67
- -> { parser.run "/tmp/input_file.mjml" }.must_raise(Mjml::Parser::ParseError, error)
60
+ err = expect { parser.run "/tmp/non_existent_file.mjml" }.must_raise(Mjml::Parser::ParseError)
61
+ expect(err.message).must_include 'Command line error'
68
62
  end
69
63
  end
70
64
  end
@@ -25,3 +25,20 @@ I18n.enforce_available_locales = false
25
25
 
26
26
  ActionMailer::Base.delivery_method = :test
27
27
  ActionMailer::Base.perform_deliveries = true
28
+
29
+ def with_settings(settings)
30
+ original_settings =
31
+ settings.each_with_object({}) do |(key, _), agg|
32
+ agg[key] = Mjml.public_send(key)
33
+ end
34
+
35
+ settings.each do |key, value|
36
+ Mjml.public_send("#{key}=", value)
37
+ end
38
+
39
+ yield
40
+ ensure
41
+ original_settings.each do |key, value|
42
+ Mjml.public_send("#{key}=", value)
43
+ end
44
+ end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mjml-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.1
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Loffler
8
8
  - Steven Pickles
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- WxP/DrZeiuWvF6P2C29w7qWIckrnmJ5ZVdNBfODgkIk4dQpo4iMBSI7D8DUIVdjV
24
- idzSNN/0YR5bKqsWu6Vc/Rn0X5nj4ZKKFNHcDHdQ0vmegW6W2IEfz4tluaj/Musd
25
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
36
+ DcQ7RSt1TU5eck6c
37
37
  -----END CERTIFICATE-----
38
- date: 2019-09-03 00:00:00.000000000 Z
38
+ date: 2020-11-29 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description: Render MJML + ERb template views in Rails
41
41
  email: sighmon@sighmon.com
@@ -63,7 +63,7 @@ homepage: https://github.com/sighmon/mjml-rails
63
63
  licenses:
64
64
  - MIT
65
65
  metadata: {}
66
- post_install_message: "Don't forget to install MJML e.g. \n$ npm install -g mjml"
66
+ post_install_message: "Don't forget to install MJML e.g. \n$ npm install mjml"
67
67
  rdoc_options: []
68
68
  require_paths:
69
69
  - lib
@@ -78,8 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubygems_version: 3.0.3
82
- signing_key:
81
+ rubygems_version: 3.1.4
82
+ signing_key:
83
83
  specification_version: 4
84
84
  summary: MJML + ERb templates
85
85
  test_files:
metadata.gz.sig CHANGED
Binary file