roadie-rails 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.travis.yml +15 -0
  4. data/Changelog.md +9 -0
  5. data/Gemfile +17 -0
  6. data/Guardfile +16 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +317 -0
  9. data/Rakefile +14 -0
  10. data/Upgrading.md +70 -0
  11. data/lib/roadie-rails.rb +1 -0
  12. data/lib/roadie/rails.rb +21 -0
  13. data/lib/roadie/rails/asset_pipeline_provider.rb +24 -0
  14. data/lib/roadie/rails/automatic.rb +16 -0
  15. data/lib/roadie/rails/document_builder.rb +18 -0
  16. data/lib/roadie/rails/inline_on_delivery.rb +17 -0
  17. data/lib/roadie/rails/mail_inliner.rb +26 -0
  18. data/lib/roadie/rails/mailer.rb +14 -0
  19. data/lib/roadie/rails/options.rb +101 -0
  20. data/lib/roadie/rails/railtie.rb +22 -0
  21. data/lib/roadie/rails/version.rb +5 -0
  22. data/roadie-rails.gemspec +29 -0
  23. data/setup.sh +62 -0
  24. data/spec/integration_spec.rb +119 -0
  25. data/spec/lib/roadie/rails/asset_pipeline_provider_spec.rb +47 -0
  26. data/spec/lib/roadie/rails/automatic_spec.rb +44 -0
  27. data/spec/lib/roadie/rails/document_builder_spec.rb +20 -0
  28. data/spec/lib/roadie/rails/mail_inliner_spec.rb +57 -0
  29. data/spec/lib/roadie/rails/mailer_spec.rb +57 -0
  30. data/spec/lib/roadie/rails/options_spec.rb +136 -0
  31. data/spec/lib/roadie/rails/railtie_spec.rb +48 -0
  32. data/spec/railsapps/README.md +69 -0
  33. data/spec/railsapps/rails_30/.gitignore +2 -0
  34. data/spec/railsapps/rails_30/Gemfile +7 -0
  35. data/spec/railsapps/rails_30/app/mailers/auto_mailer.rb +17 -0
  36. data/spec/railsapps/rails_30/app/mailers/mailer.rb +17 -0
  37. data/spec/railsapps/rails_30/app/views/auto_mailer/normal_email.html.erb +11 -0
  38. data/spec/railsapps/rails_30/app/views/auto_mailer/normal_email.text +1 -0
  39. data/spec/railsapps/rails_30/app/views/mailer/normal_email.html.erb +11 -0
  40. data/spec/railsapps/rails_30/app/views/mailer/normal_email.text +1 -0
  41. data/spec/railsapps/rails_30/config/application.rb +19 -0
  42. data/spec/railsapps/rails_30/config/boot.rb +6 -0
  43. data/spec/railsapps/rails_30/config/environment.rb +5 -0
  44. data/spec/railsapps/rails_30/config/environments/development.rb +10 -0
  45. data/spec/railsapps/rails_30/config/initializers/secret_token.rb +1 -0
  46. data/spec/railsapps/rails_30/config/initializers/session_store.rb +1 -0
  47. data/spec/railsapps/rails_30/config/routes.rb +2 -0
  48. data/spec/railsapps/rails_30/public/images/rails.png +0 -0
  49. data/spec/railsapps/rails_30/public/stylesheets/email.css +2 -0
  50. data/spec/railsapps/rails_30/script/rails +6 -0
  51. data/spec/railsapps/rails_31/.gitignore +2 -0
  52. data/spec/railsapps/rails_31/Gemfile +11 -0
  53. data/spec/railsapps/rails_31/app/assets/images/rails.png +0 -0
  54. data/spec/railsapps/rails_31/app/assets/stylesheets/email.css.scss +2 -0
  55. data/spec/railsapps/rails_31/app/mailers/auto_mailer.rb +17 -0
  56. data/spec/railsapps/rails_31/app/mailers/mailer.rb +17 -0
  57. data/spec/railsapps/rails_31/app/views/auto_mailer/normal_email.html.erb +11 -0
  58. data/spec/railsapps/rails_31/app/views/auto_mailer/normal_email.text +1 -0
  59. data/spec/railsapps/rails_31/app/views/mailer/normal_email.html.erb +11 -0
  60. data/spec/railsapps/rails_31/app/views/mailer/normal_email.text +1 -0
  61. data/spec/railsapps/rails_31/config/application.rb +22 -0
  62. data/spec/railsapps/rails_31/config/boot.rb +6 -0
  63. data/spec/railsapps/rails_31/config/environment.rb +5 -0
  64. data/spec/railsapps/rails_31/config/environments/development.rb +11 -0
  65. data/spec/railsapps/rails_31/config/initializers/secret_token.rb +1 -0
  66. data/spec/railsapps/rails_31/config/initializers/session_store.rb +1 -0
  67. data/spec/railsapps/rails_31/config/initializers/wrap_parameters.rb +4 -0
  68. data/spec/railsapps/rails_31/config/routes.rb +2 -0
  69. data/spec/railsapps/rails_31/script/rails +6 -0
  70. data/spec/railsapps/rails_32/.gitignore +2 -0
  71. data/spec/railsapps/rails_32/Gemfile +11 -0
  72. data/spec/railsapps/rails_32/app/assets/images/rails.png +0 -0
  73. data/spec/railsapps/rails_32/app/assets/stylesheets/email.css.scss +2 -0
  74. data/spec/railsapps/rails_32/app/mailers/auto_mailer.rb +17 -0
  75. data/spec/railsapps/rails_32/app/mailers/mailer.rb +17 -0
  76. data/spec/railsapps/rails_32/app/views/auto_mailer/normal_email.html.erb +11 -0
  77. data/spec/railsapps/rails_32/app/views/auto_mailer/normal_email.text +1 -0
  78. data/spec/railsapps/rails_32/app/views/mailer/normal_email.html.erb +11 -0
  79. data/spec/railsapps/rails_32/app/views/mailer/normal_email.text +1 -0
  80. data/spec/railsapps/rails_32/config/application.rb +22 -0
  81. data/spec/railsapps/rails_32/config/boot.rb +6 -0
  82. data/spec/railsapps/rails_32/config/environment.rb +5 -0
  83. data/spec/railsapps/rails_32/config/environments/development.rb +11 -0
  84. data/spec/railsapps/rails_32/config/initializers/secret_token.rb +1 -0
  85. data/spec/railsapps/rails_32/config/initializers/session_store.rb +1 -0
  86. data/spec/railsapps/rails_32/config/initializers/wrap_parameters.rb +4 -0
  87. data/spec/railsapps/rails_32/config/routes.rb +2 -0
  88. data/spec/railsapps/rails_32/script/rails +6 -0
  89. data/spec/railsapps/rails_40/Gemfile +9 -0
  90. data/spec/railsapps/rails_40/app/assets/images/rails.png +0 -0
  91. data/spec/railsapps/rails_40/app/assets/stylesheets/email.css.scss +2 -0
  92. data/spec/railsapps/rails_40/app/mailers/auto_mailer.rb +17 -0
  93. data/spec/railsapps/rails_40/app/mailers/mailer.rb +17 -0
  94. data/spec/railsapps/rails_40/app/views/auto_mailer/normal_email.html.erb +11 -0
  95. data/spec/railsapps/rails_40/app/views/auto_mailer/normal_email.text +1 -0
  96. data/spec/railsapps/rails_40/app/views/mailer/normal_email.html.erb +11 -0
  97. data/spec/railsapps/rails_40/app/views/mailer/normal_email.text +1 -0
  98. data/spec/railsapps/rails_40/bin/rails +4 -0
  99. data/spec/railsapps/rails_40/config/application.rb +18 -0
  100. data/spec/railsapps/rails_40/config/boot.rb +4 -0
  101. data/spec/railsapps/rails_40/config/environment.rb +5 -0
  102. data/spec/railsapps/rails_40/config/environments/development.rb +9 -0
  103. data/spec/railsapps/rails_40/config/initializers/secret_token.rb +1 -0
  104. data/spec/railsapps/rails_40/config/initializers/session_store.rb +1 -0
  105. data/spec/railsapps/rails_40/config/routes.rb +2 -0
  106. data/spec/railsapps/rails_40_no_pipeline/Gemfile +9 -0
  107. data/spec/railsapps/rails_40_no_pipeline/app/mailers/auto_mailer.rb +17 -0
  108. data/spec/railsapps/rails_40_no_pipeline/app/mailers/mailer.rb +17 -0
  109. data/spec/railsapps/rails_40_no_pipeline/app/views/auto_mailer/normal_email.html.erb +11 -0
  110. data/spec/railsapps/rails_40_no_pipeline/app/views/auto_mailer/normal_email.text +1 -0
  111. data/spec/railsapps/rails_40_no_pipeline/app/views/mailer/normal_email.html.erb +11 -0
  112. data/spec/railsapps/rails_40_no_pipeline/app/views/mailer/normal_email.text +1 -0
  113. data/spec/railsapps/rails_40_no_pipeline/bin/rails +4 -0
  114. data/spec/railsapps/rails_40_no_pipeline/config/application.rb +19 -0
  115. data/spec/railsapps/rails_40_no_pipeline/config/boot.rb +4 -0
  116. data/spec/railsapps/rails_40_no_pipeline/config/environment.rb +5 -0
  117. data/spec/railsapps/rails_40_no_pipeline/config/environments/development.rb +9 -0
  118. data/spec/railsapps/rails_40_no_pipeline/config/initializers/secret_token.rb +1 -0
  119. data/spec/railsapps/rails_40_no_pipeline/config/initializers/session_store.rb +1 -0
  120. data/spec/railsapps/rails_40_no_pipeline/config/routes.rb +2 -0
  121. data/spec/railsapps/rails_40_no_pipeline/log/dee +0 -0
  122. data/spec/railsapps/rails_40_no_pipeline/public/images/rails.png +0 -0
  123. data/spec/railsapps/rails_40_no_pipeline/public/stylesheets/email.css +2 -0
  124. data/spec/railsapps/rails_40_precompiled/Gemfile +9 -0
  125. data/spec/railsapps/rails_40_precompiled/Rakefile +6 -0
  126. data/spec/railsapps/rails_40_precompiled/app/assets/images/rails.png +0 -0
  127. data/spec/railsapps/rails_40_precompiled/app/assets/stylesheets/email.css.scss +2 -0
  128. data/spec/railsapps/rails_40_precompiled/app/mailers/mailer.rb +17 -0
  129. data/spec/railsapps/rails_40_precompiled/app/views/mailer/normal_email.html.erb +11 -0
  130. data/spec/railsapps/rails_40_precompiled/app/views/mailer/normal_email.text +1 -0
  131. data/spec/railsapps/rails_40_precompiled/bin/rails +4 -0
  132. data/spec/railsapps/rails_40_precompiled/config/application.rb +18 -0
  133. data/spec/railsapps/rails_40_precompiled/config/boot.rb +4 -0
  134. data/spec/railsapps/rails_40_precompiled/config/environment.rb +5 -0
  135. data/spec/railsapps/rails_40_precompiled/config/environments/development.rb +14 -0
  136. data/spec/railsapps/rails_40_precompiled/config/initializers/secret_token.rb +1 -0
  137. data/spec/railsapps/rails_40_precompiled/config/initializers/session_store.rb +1 -0
  138. data/spec/railsapps/rails_40_precompiled/config/routes.rb +2 -0
  139. data/spec/railsapps/rails_40_precompiled/public/assets/email-fad0c62b8f82e2835c1d0bdc19894257.css +5 -0
  140. data/spec/railsapps/rails_40_precompiled/public/assets/email-fad0c62b8f82e2835c1d0bdc19894257.css.gz +0 -0
  141. data/spec/railsapps/rails_40_precompiled/public/assets/manifest-8a3d16aeb2a40fe5057dd998c3edab10.json +1 -0
  142. data/spec/railsapps/rails_40_precompiled/public/assets/rails-231a680f23887d9dd70710ea5efd3c62.png +0 -0
  143. data/spec/railsapps/rails_41/.gitignore +16 -0
  144. data/spec/railsapps/rails_41/Gemfile +8 -0
  145. data/spec/railsapps/rails_41/app/assets/images/rails.png +0 -0
  146. data/spec/railsapps/rails_41/app/assets/stylesheets/email.css.scss +2 -0
  147. data/spec/railsapps/rails_41/app/mailers/auto_mailer.rb +17 -0
  148. data/spec/railsapps/rails_41/app/mailers/mailer.rb +17 -0
  149. data/spec/railsapps/rails_41/app/views/auto_mailer/normal_email.html.erb +11 -0
  150. data/spec/railsapps/rails_41/app/views/auto_mailer/normal_email.text +1 -0
  151. data/spec/railsapps/rails_41/app/views/mailer/normal_email.html.erb +11 -0
  152. data/spec/railsapps/rails_41/app/views/mailer/normal_email.text +1 -0
  153. data/spec/railsapps/rails_41/bin/rails +4 -0
  154. data/spec/railsapps/rails_41/config.ru +4 -0
  155. data/spec/railsapps/rails_41/config/application.rb +13 -0
  156. data/spec/railsapps/rails_41/config/boot.rb +4 -0
  157. data/spec/railsapps/rails_41/config/environment.rb +5 -0
  158. data/spec/railsapps/rails_41/config/environments/development.rb +9 -0
  159. data/spec/railsapps/rails_41/config/initializers/secret_token.rb +1 -0
  160. data/spec/railsapps/rails_41/config/initializers/session_store.rb +1 -0
  161. data/spec/railsapps/rails_41/config/routes.rb +2 -0
  162. data/spec/spec_helper.rb +14 -0
  163. data/spec/support/have_selector_matcher.rb +3 -0
  164. data/spec/support/have_styling_matcher.rb +63 -0
  165. data/spec/support/rails_app.rb +70 -0
  166. metadata +443 -0
@@ -0,0 +1,70 @@
1
+ # Upgrading from Roadie 2
2
+
3
+ ## Project
4
+
5
+ Start by adding `roadie-rails` to your `Gemfile`. Remember to specify version requirements!
6
+
7
+ You'll need to change your configuration too. The main change is that Roadie now uses its own configuration for URL options:
8
+
9
+ ```ruby
10
+ config.roadie.url_options = {host: "myapp.com"}
11
+ ```
12
+
13
+ Most other options should be easy to convert:
14
+
15
+ ```ruby
16
+ config.roadie.enabled => Removed
17
+ # Override `#roadie_options` in the mailers to control enabling (if using Automatic) or do it manually (if using Mailer).
18
+
19
+ config.roadie.before_inlining => config.roadie.before_transformation
20
+ config.roadie.provider => config.roadie.asset_providers
21
+ ```
22
+
23
+ ## Mailers
24
+
25
+ Next, find all mailers that you want to inline and include the `Roadie::Rails::Automatic` module:
26
+
27
+ ```ruby
28
+ class MyMailer < ActionMailer::Base
29
+ include Roadie::Rails::Automatic
30
+
31
+ def cool_mail
32
+ mail(options)
33
+ end
34
+ end
35
+ ```
36
+
37
+ You'll also need to remove any uses of the `:css` option to `mail` and `default_options`. Include CSS files by using `stylesheet_link_tag` instead.
38
+
39
+ **Before:**
40
+
41
+ ```ruby
42
+ class MyMailer < ActionMailer::Base
43
+ defaults css: :email
44
+
45
+ def cool
46
+ mail(css: [:email, :cool])
47
+ end
48
+ end
49
+ ```
50
+
51
+
52
+ ** After:**
53
+
54
+ ```erb
55
+ <head>
56
+ <%= stylesheet_link_tag :email, :cool %>
57
+ </head>
58
+ ```
59
+
60
+ ## Views
61
+
62
+ Search through your templates after uses of `data-immutable` and change them to `data-roadie-ignore`.
63
+
64
+ ## Tests
65
+
66
+ If your tests relied on the styles being applied, they will fail unless you deliver the email. `Roadie::Rails::Automatic` does not inline stylesheets when you don't deliver the email. Either change how your tests work, or call `deliver` on the generated emails where you need it. If the problem is major, switch from `Roadie::Rails::Automatic` to `Roadie::Rails::Mailer` and follow the instructions in the documentation.
67
+
68
+ ## Custom asset providers
69
+
70
+ The API has changed a bit. Read the new examples in the README and you should be able to convert without any great effort.
@@ -0,0 +1 @@
1
+ require 'roadie/rails'
@@ -0,0 +1,21 @@
1
+ module Roadie
2
+ module Rails
3
+ end
4
+ end
5
+
6
+ require "roadie"
7
+
8
+ require "roadie/rails/version"
9
+ require "roadie/rails/options"
10
+
11
+ require "roadie/rails/document_builder"
12
+ require "roadie/rails/mail_inliner"
13
+
14
+ require "roadie/rails/asset_pipeline_provider"
15
+
16
+ require "roadie/rails/mailer"
17
+
18
+ require "roadie/rails/automatic"
19
+ require "roadie/rails/inline_on_delivery"
20
+
21
+ require "roadie/rails/railtie"
@@ -0,0 +1,24 @@
1
+ module Roadie
2
+ module Rails
3
+ class AssetPipelineProvider
4
+ include Roadie::AssetProvider
5
+ attr_reader :pipeline
6
+
7
+ def initialize(pipeline)
8
+ super()
9
+ @pipeline = pipeline
10
+ end
11
+
12
+ def find_stylesheet(name)
13
+ if (asset = @pipeline[normalize_asset_name name])
14
+ Stylesheet.new("#{asset.pathname} (live compiled)", asset.to_s)
15
+ end
16
+ end
17
+
18
+ private
19
+ def normalize_asset_name(href)
20
+ File.basename href.split('?').first
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module Roadie
2
+ module Rails
3
+ module Automatic
4
+ def mail(*args, &block)
5
+ super.tap do |email|
6
+ email.extend InlineOnDelivery
7
+ email.roadie_options = roadie_options.dup
8
+ end
9
+ end
10
+
11
+ def roadie_options
12
+ ::Rails.application.config.roadie
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Roadie
2
+ module Rails
3
+ class DocumentBuilder
4
+ class << self
5
+ def build(html, options)
6
+ new.build(html, options)
7
+ end
8
+ private :new
9
+ end
10
+
11
+ def build(html, options)
12
+ document = Document.new(html)
13
+ options.apply_to document
14
+ document
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ module Roadie
2
+ module Rails
3
+ # Extend instances of Mail with this to have it inlined automatically when
4
+ # delivered. You'll need to assign some #roadie_options for it to actually
5
+ # do anything.
6
+ module InlineOnDelivery
7
+ attr_accessor :roadie_options
8
+
9
+ def deliver
10
+ if (options = roadie_options)
11
+ MailInliner.new(self, options).execute
12
+ end
13
+ super
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ module Roadie
2
+ module Rails
3
+ class MailInliner
4
+ attr_reader :email, :options
5
+
6
+ def initialize(email, options)
7
+ @email = email
8
+ @options = options
9
+ end
10
+
11
+ def execute
12
+ improve_html_part(email.html_part) if email.html_part
13
+ email
14
+ end
15
+
16
+ private
17
+ def improve_html_part(html_part)
18
+ html_part.body = make_new_html(html_part.body.decoded)
19
+ end
20
+
21
+ def make_new_html(old_html)
22
+ DocumentBuilder.build(old_html, options).transform
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module Roadie
2
+ module Rails
3
+ module Mailer
4
+ def roadie_mail(options = {}, &block)
5
+ email = mail(options, &block)
6
+ MailInliner.new(email, roadie_options).execute
7
+ end
8
+
9
+ def roadie_options
10
+ ::Rails.application.config.roadie
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,101 @@
1
+ module Roadie
2
+ module Rails
3
+ class Options
4
+ private
5
+ ATTRIBUTE_NAMES = [:url_options, :before_transformation, :after_transformation, :asset_providers]
6
+
7
+ public
8
+ attr_reader *ATTRIBUTE_NAMES
9
+
10
+ def initialize(options = {})
11
+ complain_about_unknown_keys options.keys
12
+ self.url_options = options[:url_options]
13
+ self.before_transformation = options[:before_transformation]
14
+ self.after_transformation = options[:after_transformation]
15
+ self.asset_providers = options[:asset_providers]
16
+ end
17
+
18
+ def url_options=(options)
19
+ @url_options = options
20
+ end
21
+
22
+ def before_transformation=(callback)
23
+ @before_transformation = callback
24
+ end
25
+
26
+ def after_transformation=(callback)
27
+ @after_transformation = callback
28
+ end
29
+
30
+ def asset_providers=(providers)
31
+ if providers
32
+ @asset_providers = ProviderList.wrap providers
33
+ end
34
+ end
35
+
36
+ def apply_to(document)
37
+ document.url_options = url_options
38
+ document.before_transformation = before_transformation
39
+ document.after_transformation = after_transformation
40
+ document.asset_providers = asset_providers
41
+ end
42
+
43
+ def merge(options)
44
+ dup.merge! options
45
+ end
46
+
47
+ def merge!(options)
48
+ [:url_options, :before_transformation, :after_transformation, :asset_providers].each do |attribute|
49
+ send "#{attribute}=", options.fetch(attribute, send(attribute))
50
+ end
51
+ self
52
+ end
53
+
54
+ def combine(options)
55
+ dup.combine! options
56
+ end
57
+
58
+ def combine!(options)
59
+ self.url_options = combine_hash url_options, options[:url_options]
60
+ self.before_transformation = combine_callable before_transformation, options[:before_transformation]
61
+ self.after_transformation = combine_callable after_transformation, options[:after_transformation]
62
+ self.asset_providers = combine_providers asset_providers, options[:asset_providers]
63
+ self
64
+ end
65
+
66
+ private
67
+ def combine_hash(first, second)
68
+ combine_nilable(first, second) do |a, b|
69
+ a.merge(b)
70
+ end
71
+ end
72
+
73
+ def combine_callable(first, second)
74
+ combine_nilable(first, second) do |a, b|
75
+ proc { |*args| a.call(*args); b.call(*args) }
76
+ end
77
+ end
78
+
79
+ def combine_providers(first, second)
80
+ combine_nilable(first, second) do |a, b|
81
+ ProviderList.new a.to_a + Array.wrap(b)
82
+ end
83
+ end
84
+
85
+ def combine_nilable(first, second)
86
+ if first && second
87
+ yield first, second
88
+ else
89
+ first ? first : second
90
+ end
91
+ end
92
+
93
+ def complain_about_unknown_keys(keys)
94
+ invalid_keys = keys - ATTRIBUTE_NAMES
95
+ if invalid_keys.size > 0
96
+ raise ArgumentError, "Unknown configuration parameters: #{invalid_keys}", caller(1)
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,22 @@
1
+ require 'rails'
2
+
3
+ module Roadie
4
+ module Rails
5
+ class Railtie < ::Rails::Railtie
6
+ config.roadie = Roadie::Rails::Options.new
7
+
8
+ initializer "roadie-rails.setup" do |app|
9
+ config.roadie.asset_providers = [
10
+ Roadie::FilesystemProvider.new(::Rails.root.join("public").to_s),
11
+ ]
12
+
13
+ # Saying config.assets.enabled here does not work in Rails 3.1-3.2, but
14
+ # APP.config.assets work. There is a difference between "config" and
15
+ # "app.config" on those versions.
16
+ if app.config.respond_to?(:assets) && app.config.assets.enabled != false
17
+ config.roadie.asset_providers << AssetPipelineProvider.new(app.assets)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ module Roadie
2
+ module Rails
3
+ VERSION = "1.0.0.pre1"
4
+ end
5
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'roadie/rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "roadie-rails"
8
+ spec.version = Roadie::Rails::VERSION
9
+ spec.authors = ["Magnus Bergmark"]
10
+ spec.email = ["magnus.bergmark@gmail.com"]
11
+ spec.homepage = 'http://github.com/Mange/roadie-rails'
12
+ spec.summary = %q{Making HTML emails comfortable for the Rails rockstars}
13
+ spec.description = %q{Hooks Roadie into your Rails application to help with email generation.}
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.extra_rdoc_files = %w[README.md Changelog.md LICENSE.txt]
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "roadie", "~> 3.0.0.pre1"
23
+ spec.add_dependency "rails", ">= 3.0", "< 4.2"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.6"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "rspec-rails"
28
+ spec.add_development_dependency "rspec-collection_matchers"
29
+ end
@@ -0,0 +1,62 @@
1
+ #!/bin/bash
2
+
3
+ # This cannot be executed from within a Ruby-based environment (like Rake)
4
+ # since Bundler will affect the subshell environments.
5
+
6
+ set -e
7
+
8
+ function header() {
9
+ echo -e "\n$(tput setaf 5)$(tput smul)$1:$(tput sgr0)"
10
+ }
11
+
12
+ function green() {
13
+ echo $(tput setaf 2)$@$(tput sgr0)
14
+ }
15
+
16
+ function update() {
17
+ bundle update | grep -ve "^Using "
18
+ }
19
+
20
+ function install() {
21
+ bundle install --quiet && green " OK"
22
+ }
23
+
24
+ root=$(dirname $0)
25
+
26
+ # Set by Travis CI; interferes with the nested repos
27
+ unset BUNDLE_GEMFILE
28
+
29
+ if [[ $1 == "install" ]]; then
30
+ header "Installing gem dependencies"
31
+ install
32
+
33
+ for app_path in $root/spec/railsapps/rails_*; do
34
+ (
35
+ cd $app_path
36
+ header "Installing gems for $(basename $app_path)"
37
+ install
38
+ )
39
+ done
40
+ echo ""
41
+
42
+ elif [[ $1 == "update" ]]; then
43
+ header "Updating gem dependencies"
44
+ update
45
+
46
+ for app_path in $root/spec/railsapps/rails_*; do
47
+ (
48
+ cd $app_path
49
+ header "Updating $(basename $app_path)"
50
+ update
51
+ )
52
+ done
53
+ echo ""
54
+
55
+ else
56
+ echo "Usage: $0 [install|update]"
57
+ echo ""
58
+ echo " Install: Install all bundled updates."
59
+ echo " Update: Run bundle update on all bundles."
60
+ echo ""
61
+ exit 127
62
+ fi