cobranding 1.2.3 → 1.3.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: e2d581381b003911325c74d39156ac4a57e92aab
4
- data.tar.gz: 5cd1ea7db2de4c6bdc6c0322e557d6fe42103ddc
3
+ metadata.gz: 6f291bfa3856e3e76f1fc6ab2618ae4400f3f271
4
+ data.tar.gz: c28bdccd62fa0b946537c065ac920f42fd3006ee
5
5
  SHA512:
6
- metadata.gz: 34f67921e280300d25755e29c483e5fdc08bb102694424eae71978fd88629a090eadcef44483ddc299e9ce2895f54a363389f29e192dec8d2e6ae96bae6b2148
7
- data.tar.gz: 2193656f961cfc9260719884503b5f3e8dc6450a1a8d85a451c1a89dcd477a83dc0f252ef49e0414f91c4f3234ae5030086a31b7deed697a8fa290998757cadd
6
+ metadata.gz: a1f27079073f1fecd0aad1c542eb61ec1623c3a5920ba5c61b3ae4df4a208a5223a84f190847182a9a5f463d635a010432e13765a148abdc332f4b209d1da1e9
7
+ data.tar.gz: ac4ccf60123df1aedbff68697f9bc330f9657bd90451a3c4792c20227eeb1096d1da3b4b4f294f2b66eadccb2c3f9a6ed7fa991c93cdf12831aa8321a87913aa
data/.gitignore CHANGED
@@ -1,7 +1,6 @@
1
- Gemfile.lock
2
- *.swm
3
- *.swn
4
- *.swo
5
- *.swp
1
+ /Gemfile.lock
2
+ /gemfiles/*.lock
3
+ /pkg
4
+ /.bundle
5
+ *.sw[mnop]
6
6
  *.gem
7
- pkg
@@ -0,0 +1,20 @@
1
+ # Install gems for all appraisal definitions:
2
+ #
3
+ # $ appraisal install
4
+ #
5
+ # To run tests on different versions:
6
+ #
7
+ # $ appraisal activerecord_x.x rspec spec
8
+
9
+ [
10
+ [ '3.2', '~> 3.2.0' ],
11
+ [ '4.0', '~> 4.0.0' ],
12
+ [ '4.1', '~> 4.1.0' ],
13
+ [ '4.2', '~> 4.2.0' ],
14
+ ].each do |ver_name, ver_req|
15
+ # Note: for the rake task to work, these definition names must be the same as the corresponding
16
+ # filename produced in "gemfiles/", i.e. all characters must be in this set: [A-Za-z0-9_.]
17
+ appraise "rails_#{ver_name}" do
18
+ gem 'actionpack', ver_req
19
+ end
20
+ end
@@ -4,11 +4,11 @@ This gem allows you too pull marked up HTML from a URL and use it as a layout in
4
4
 
5
5
  == Fetching the layout
6
6
 
7
- To fetch the layout from a service, you can cal
7
+ To fetch the layout from a service, you can call
8
8
 
9
9
  Cobranding::Layout.get(url, options)
10
10
 
11
- Where +url+ and +options+ are values passed to +SimpleHttpClient+. Additional options available are
11
+ Where +url+ and +options+ are values passed to +RestClient+. Additional options available are
12
12
 
13
13
  * base_url: set the base url for expanding any relative URLs in the markup
14
14
  * method: set to :post to perform a POST instead of a GET request
@@ -67,3 +67,7 @@ If the tag includes a block, it will only be called if there was an error evalua
67
67
  == Persisting
68
68
 
69
69
  If you have layouts that don't need to be real time, you can persist them to a data store and update them asynchronously via a background job. You simply need to include Cobranding::PersistentLayout in your model. To render the layout, you can then pass in model.layout to the cobranding_layout helper instead of a URL.
70
+
71
+ == Limitations
72
+
73
+ The result of Cobranding::Helper#cobranding_layout (or Cobranding::Layout#evaluate) will be a string with UTF-8 encoding, regardless of the encoding reported by the server. If you need the result to be a different encoding, you can call force_encoding on the result.
data/Rakefile CHANGED
@@ -1 +1,21 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'bundler/setup'
3
+ require 'pathname'
4
+
5
+ # Note: if you get this error: "Bundler could not find compatible versions for gem ..."
6
+ # try deleting Gemfile.lock (usually happens when switching branches).
7
+
8
+ task default: :appraise_all
9
+
10
+ task :appraise_all do
11
+ success_map = {}
12
+ Pathname.glob('gemfiles/*.gemfile').each do |f|
13
+ appraise_def = f.basename('.gemfile').to_s
14
+ success = system('appraisal', appraise_def, 'rspec', 'spec')
15
+ success_map[appraise_def] = success
16
+ end
17
+ puts "\n===== Test Summary ====="
18
+ success_map.each do |appraise_def, success|
19
+ puts "#{appraise_def}: #{success ? 'no failures (but check pending)' : 'failed'}"
20
+ end
21
+ end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'cobranding/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'cobranding'
7
- spec.version = Cobranding::VERSION
7
+ spec.version = Cobranding::VERSION.dup # dup for 1.9's rubygems
8
8
  spec.authors = ['Brian Durand', 'Milan Dobrota']
9
9
  spec.email = ['mdobrota@tribpub.com']
10
10
  spec.summary = 'Provides Rails view layouts from an HTTP service'
@@ -16,11 +16,12 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ['lib']
18
18
 
19
- spec.add_runtime_dependency 'actionpack', '>= 3.0.0'
20
- spec.add_runtime_dependency 'rest-client', '>= 0'
19
+ spec.add_runtime_dependency 'actionpack', '>= 3.2', '< 4.3'
20
+ spec.add_runtime_dependency 'rest-client', '~> 1.6'
21
21
 
22
- spec.add_development_dependency 'rspec', '~> 2.8.0'
23
- spec.add_development_dependency 'webmock', '~> 1.7.7'
22
+ spec.add_development_dependency 'rspec', '~> 2.99'
23
+ spec.add_development_dependency 'webmock', '~> 1.21.0'
24
24
  spec.add_development_dependency 'bundler', '~> 1.7'
25
25
  spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'appraisal'
26
27
  end
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 3.2.0"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 4.0.0"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 4.1.0"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "actionpack", "~> 4.2.0"
6
+
7
+ gemspec :path => "../"
@@ -1,3 +1,6 @@
1
+ # coding: utf-8
2
+ # NOTE this file should be in utf-8 encoding so #evaluate generates a string with
3
+ # this encoding. Otherwise on ruby 1.9 it'll be US-ASCII.
1
4
  require 'erb'
2
5
  require 'digest/md5'
3
6
  require 'rest-client'
@@ -10,7 +13,7 @@ module Cobranding
10
13
  UNQUOTED_RELATIVE_URL = /(<\w+\s((src)|(href))=)\/(.*?)(>|(\s[^>]*?>))/i
11
14
 
12
15
  class << self
13
- # Get the layout HTML from a service. The options can be any of the options accepted by SimpleHttpClient
16
+ # Get the layout HTML from a service. The options can be any of the options accepted by RestClient
14
17
  # or +:base_url+. Any relative URLs found in the HTML will be expanded to absolute URLs using either the
15
18
  # +:base_url+ option or the +url+ as the base.
16
19
  #
@@ -172,6 +175,8 @@ module Cobranding
172
175
  suffix = options[:suffix] if options
173
176
  suffix = "_for_cobranding" unless prefix or suffix
174
177
  evaluator = Object.new
178
+ # "src" is erb code, which contains the code `force_encoding(__ENCODING__)`.
179
+ # __ENCODING__ is the current file's encoding (see magic comment above).
175
180
  eval <<-EOS
176
181
  def evaluator.evaluate
177
182
  #{src}
@@ -1,3 +1,3 @@
1
1
  module Cobranding
2
- VERSION = '1.2.3'.freeze
2
+ VERSION = '1.3.0'.freeze
3
3
  end
@@ -30,7 +30,7 @@ describe Cobranding::Helper do
30
30
 
31
31
  before :each do
32
32
  cache = ActiveSupport::Cache::MemoryStore.new
33
- Rails.stub!(:cache).and_return(cache)
33
+ Rails.stub(:cache).and_return(cache)
34
34
  end
35
35
 
36
36
  it "should render a layout in a view with a Layout" do
@@ -9,7 +9,7 @@ describe Cobranding::Layout do
9
9
  end
10
10
 
11
11
  cache = ActiveSupport::Cache::MemoryStore.new
12
- Rails.stub!(:cache).and_return(cache)
12
+ Rails.stub(:cache).and_return(cache)
13
13
  end
14
14
 
15
15
  it "should be able to evaluate a template from HTML" do
@@ -84,14 +84,14 @@ describe Cobranding::Layout do
84
84
  end
85
85
 
86
86
  it "should be able to get a layout from a URL with a POST" do
87
- stub_request(:post, "localhost/layout").with(:params => {"site" => "1"}, :headers => {'Content-Type'=>'application/x-www-form-urlencoded'}).to_return(:status => [200, "Success"], :body => "<html>{{test_tag}}</html>")
87
+ stub_request(:post, "localhost/layout").with(:body => {"site" => "1"}, :headers => {'Content-Type'=>'application/x-www-form-urlencoded'}).to_return(:status => [200, "Success"], :body => "<html>{{test_tag}}</html>")
88
88
  layout = Cobranding::Layout.get("http://localhost/layout", :method => :post, :site => 1)
89
89
  layout.evaluate(@context).should == "<html>Woo woo</html>"
90
90
  end
91
91
 
92
92
  it "should be able to get a layout from a URL without caching" do
93
93
  stub_request(:get, "localhost/layout?site=1").to_return(:status => [200, "Success"], :body => "<html>{{test_tag}}</html>")
94
- Rails.stub!(:cache).and_return(nil)
94
+ Rails.stub(:cache).and_return(nil)
95
95
  layout = Cobranding::Layout.get("http://localhost/layout", :params => {:site => 1})
96
96
  layout.evaluate(@context).should == "<html>Woo woo</html>"
97
97
  end
@@ -148,4 +148,12 @@ describe Cobranding::Layout do
148
148
  end
149
149
  layout.evaluate(@context).should == "this is Woo woo stuff"
150
150
  end
151
+
152
+ it "returns a UTF-8 encoded string" do
153
+ layout = Cobranding::Layout.new("<html>Test</html>")
154
+ expect(layout.evaluate(@context).encoding.name).to eq 'UTF-8'
155
+ unless Gem::Requirement.new('~> 1.9.1').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
156
+ warn "Please also run this test on ruby 1.9 (#{File.basename(__FILE__)}:#{__LINE__})."
157
+ end
158
+ end
151
159
  end
@@ -1,9 +1,6 @@
1
- require 'rubygems'
2
1
  require 'logger'
3
2
  require 'webmock/rspec'
4
- rails_version = ENV["RAILS_VERSION"] || ">=3.0.5"
5
- gem 'activesupport', rails_version
6
- gem 'actionpack', rails_version
3
+
7
4
  begin
8
5
  require 'simplecov'
9
6
  SimpleCov.start do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cobranding
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-26 00:00:00.000000000 Z
12
+ date: 2015-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,56 +17,62 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 3.0.0
20
+ version: '3.2'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '4.3'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
28
  - - ">="
26
29
  - !ruby/object:Gem::Version
27
- version: 3.0.0
30
+ version: '3.2'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.3'
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: rest-client
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
- - - ">="
38
+ - - "~>"
33
39
  - !ruby/object:Gem::Version
34
- version: '0'
40
+ version: '1.6'
35
41
  type: :runtime
36
42
  prerelease: false
37
43
  version_requirements: !ruby/object:Gem::Requirement
38
44
  requirements:
39
- - - ">="
45
+ - - "~>"
40
46
  - !ruby/object:Gem::Version
41
- version: '0'
47
+ version: '1.6'
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: rspec
44
50
  requirement: !ruby/object:Gem::Requirement
45
51
  requirements:
46
52
  - - "~>"
47
53
  - !ruby/object:Gem::Version
48
- version: 2.8.0
54
+ version: '2.99'
49
55
  type: :development
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
52
58
  requirements:
53
59
  - - "~>"
54
60
  - !ruby/object:Gem::Version
55
- version: 2.8.0
61
+ version: '2.99'
56
62
  - !ruby/object:Gem::Dependency
57
63
  name: webmock
58
64
  requirement: !ruby/object:Gem::Requirement
59
65
  requirements:
60
66
  - - "~>"
61
67
  - !ruby/object:Gem::Version
62
- version: 1.7.7
68
+ version: 1.21.0
63
69
  type: :development
64
70
  prerelease: false
65
71
  version_requirements: !ruby/object:Gem::Requirement
66
72
  requirements:
67
73
  - - "~>"
68
74
  - !ruby/object:Gem::Version
69
- version: 1.7.7
75
+ version: 1.21.0
70
76
  - !ruby/object:Gem::Dependency
71
77
  name: bundler
72
78
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +101,20 @@ dependencies:
95
101
  - - "~>"
96
102
  - !ruby/object:Gem::Version
97
103
  version: '10.0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: appraisal
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
98
118
  description: Provides Rails view layouts from an HTTP service.
99
119
  email:
100
120
  - mdobrota@tribpub.com
@@ -103,11 +123,16 @@ extensions: []
103
123
  extra_rdoc_files: []
104
124
  files:
105
125
  - ".gitignore"
126
+ - Appraisals
106
127
  - Gemfile
107
128
  - License.txt
108
129
  - README.rdoc
109
130
  - Rakefile
110
131
  - cobranding.gemspec
132
+ - gemfiles/rails_3.2.gemfile
133
+ - gemfiles/rails_4.0.gemfile
134
+ - gemfiles/rails_4.1.gemfile
135
+ - gemfiles/rails_4.2.gemfile
111
136
  - lib/cobranding.rb
112
137
  - lib/cobranding/helper.rb
113
138
  - lib/cobranding/layout.rb