metanol 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NWI2M2YyMTUyNjNlYWI1MzJlZTQ0YWRjODhiMWNkYjY2ZGNhOGZlMQ==
5
- data.tar.gz: !binary |-
6
- NzVmYmRhYTU5N2U3MGU5MjI3MTAwMDg0MmNhMjZmOTBkZWVmMTI4YQ==
2
+ SHA1:
3
+ metadata.gz: 192b22e268ed2c08e3b83a989deba1c79035530b
4
+ data.tar.gz: 779557ee8a0cc78ac1ccabca931e741cc1a833ef
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZGM4N2RiM2I0MTU5OWIxNDdkYzFmMzMyNzZhZjY2Zjc1NDgyYjY0OTQ4YjJm
10
- NDVkM2NhMzM4N2Q2NGVhMzBmNzg0ODA4ZWJlNDk4NjVlMWQzNGI1OTg1NWI4
11
- YTY2Y2E2YmE5NzZiNGI0ZTRiYzQ2Y2U4Y2JiZjM2NjAwOWMwMTQ=
12
- data.tar.gz: !binary |-
13
- YTI3NWU5YjdjZWQ0ZmU5OTFkZTFiZjE0NWY0MTI1MzFjN2IwODkwOGUyMTA2
14
- MmQxMmM3NDgyMDg2NzBiMzhjZGZlZjQ5OWVhMTIwMzQyM2Y2NjY0ZDFlMTc3
15
- NWRhOWQyZDZhNzEyNzM3ZTY4MGJmY2EwNTlhYmEzZDYyYTc3ZDA=
6
+ metadata.gz: b5a924dcf8196ae2a6d12c860b7aa792b547d54b38618688ad4ed215bb0854a7116534b21c14acef8fed6f4692c166fcb094dc5b512cef1bdfac2e2a00828c4c
7
+ data.tar.gz: 67cc4bab0f137f8dc6d99be1dedafbbd58fba91e8e64171ec09a0fe3caf341e287a6f95e0ef9339a81acca8188c44718123a5979c39c1e0a32caa664eb450162
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -6,75 +6,84 @@ module Metanol
6
6
  module EngineController
7
7
  extend ActiveSupport::Concern
8
8
 
9
+ included do
10
+ before_filter :clear_metanols
11
+ end
12
+
9
13
  module ClassMethods
10
- def metanol_options
11
- @@metanol_options ||= {}
14
+ def common_metanols
15
+ @@common_metanols ||= {}
12
16
  end
13
17
 
14
18
  SUPPORT_GROUPS.keys.each do |method|
15
19
  method_name = "#{method == :main ? '' : "#{method}_"}meta"
16
20
  define_method method_name do |*args|
17
- add_meta_tag(method, *args)
21
+ add_meta_tag(common_metanols, method, *args)
18
22
  end
19
23
 
20
24
  get_method_name = "get_#{method_name}"
21
25
  define_method get_method_name do |name|
22
- get_meta_by_type(method, name)
26
+ get_meta_tag(common_metanols, method, name)
23
27
  end
24
28
  end
25
29
 
26
30
  private
27
31
 
28
- def add_meta_tag(type, *args)
32
+ def add_meta_tag(repo, type, *args)
29
33
  if args[0].is_a? Hash
30
34
  filters = args[1..-1]
31
35
  args[0].each do |name, value|
32
- add_meta_by_type type, name, value, filters
36
+ add_meta_by_type repo, type, name, value, filters
33
37
  end
34
38
  else
35
39
  name = args[0].to_sym
36
40
  value = args[1]
37
41
  filters = args[2..-1]
38
- add_meta_by_type type, name, value, filters
42
+ add_meta_by_type repo, type, name, value, filters
39
43
  end
40
44
  end
41
45
 
42
- def add_meta_by_type(type, name, value, filters=[])
46
+ def add_meta_by_type(repo, type, name, value, filters=[])
43
47
  meta_class = SUPPORT_GROUPS[type]
44
48
  key = get_meta_key(type, name)
45
- if metanol_options.key? key
46
- metanol_options[key].value = value
47
- metanol_options[key].filters = filters
48
- else
49
- metanol_options[key] = meta_class.new(name, value, filters)
49
+ unless repo.key? key
50
+ repo[key] = meta_class.new(name, value, filters)
51
+ return
50
52
  end
53
+ repo[key].value = value
54
+ repo[key].filters = filters
51
55
  end
52
56
 
53
- def get_meta_by_type(type, name)
57
+ def get_meta_tag(repo, type, name)
54
58
  key = get_meta_key(type, name)
55
- metanol_options.key?(key) ? metanol_options[key].value : nil
59
+ repo.key?(key) ? repo[key].value : nil
56
60
  end
57
61
 
58
62
  def get_meta_key(type, name)
59
63
  "#{type}:#{name}"
60
64
  end
61
-
62
65
  end
63
66
 
64
67
  SUPPORT_GROUPS.keys.each do |method|
65
68
  method_name = "#{method == :main ? '' : "#{method}_"}meta"
66
69
  define_method method_name do |*args|
67
- self.class.send(method_name, *args)
70
+ self.class.send 'add_meta_tag', action_metanols, method, *args
68
71
  end
69
72
 
70
73
  get_method_name = "get_#{method_name}"
71
74
  define_method get_method_name do |name|
72
- self.class.send(get_method_name, name)
75
+ self.class.send 'get_meta_tag', action_metanols, method, name
73
76
  end
74
77
  end
75
78
 
76
- def metanol_options
77
- self.class.metanol_options
79
+ def action_metanols
80
+ @action_metanols ||= {}
81
+ end
82
+
83
+ private
84
+
85
+ def clear_metanols
86
+ @action_metanols = {}
78
87
  end
79
88
 
80
89
  end
@@ -39,8 +39,9 @@ module Metanol
39
39
  private
40
40
 
41
41
  def metanol_render_tags(type)
42
- result = ""
43
- self.controller.metanol_options.each_value do |value|
42
+ result = ''
43
+ metanols = self.controller.class.common_metanols.merge(self.controller.action_metanols)
44
+ metanols.each_value do |value|
44
45
  next unless value.is_a? type
45
46
  result << value.render
46
47
  end
@@ -1,3 +1,3 @@
1
1
  module Metanol
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe HomeController do
4
- context "render meta tags with some global ones" do
4
+ context 'render meta tags with some global ones' do
5
5
 
6
- context "all meta tags" do
6
+ context 'all meta tags' do
7
7
  before { get :index }
8
8
 
9
9
  it { response.should have_selector("meta[content=\"#{url_for(controller: :home, action: :index, host: 'test.host')}\"]", property: 'og:url') }
@@ -15,6 +15,7 @@ describe HomeController do
15
15
  it { response.should have_selector('meta[content="alexa code"]', name: 'alexaVerifyID') }
16
16
  it { response.should have_selector('meta[content="google code"]', name: 'google-site-verification') }
17
17
  it { response.should have_selector('meta[content="yandex code"]', name: 'yandex-verification') }
18
+ it { response.body.should =~ /<title>Index Page<\/title>/ }
18
19
  end
19
20
 
20
21
  context "only WebMaster's meta tags" do
@@ -28,5 +29,11 @@ describe HomeController do
28
29
  it { response.should have_selector('meta[content="yandex code"]', name: 'yandex-verification') }
29
30
  end
30
31
 
32
+ context 'correct title tag' do
33
+ before { get :index }
34
+ before { get :get_title }
35
+ it { response.body.should_not =~ /<title>Index Page<\/title>/ }
36
+ end
37
+
31
38
  end
32
39
  end
@@ -6,8 +6,8 @@ ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database
6
6
  ActiveRecord::Base.establish_connection('test')
7
7
 
8
8
  app = Class.new(Rails::Application)
9
- app.config.secret_token = "f974ebb750a8e200c85f7a749d589fa2"
10
- app.config.session_store :cookie_store, :key => "_myapp_session"
9
+ app.config.secret_token = 'f974ebb750a8e200c85f7a749d589fa2'
10
+ app.config.session_store :cookie_store, :key => '_myapp_session'
11
11
  app.config.active_support.deprecation = :log
12
12
  app.config.eager_load = false
13
13
  app.config.root = File.dirname(__FILE__)
@@ -16,7 +16,11 @@ app.initialize!
16
16
 
17
17
  app.routes.draw do
18
18
  resources :tests
19
- resources :home
19
+ resources :home do
20
+ collection do
21
+ get :get_title
22
+ end
23
+ end
20
24
  end
21
25
 
22
26
  class ApplicationController < ActionController::Base; end
@@ -38,11 +42,18 @@ class HomeController < ParentController
38
42
  end
39
43
 
40
44
  def index
41
- og_meta title: "OpenGraph Title", description: "OpenGraph Description"
45
+ meta :title, 'Index Page'
46
+ og_meta title: 'OpenGraph Title', description: 'OpenGraph Description'
42
47
  render :inline => <<-ERB
43
48
  <%= metanol_tags %>
44
49
  ERB
45
50
  end
51
+
52
+ def get_title
53
+ render :inline => <<-ERB
54
+ <%= metanol_main_tags %>
55
+ ERB
56
+ end
46
57
  end
47
58
 
48
59
  Object.const_set(:ApplicationHelper, Module.new)
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Kondratyuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-10 00:00:00.000000000 Z
11
+ date: 2014-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
27
  description: This is a meta tags plugin which helps to manage meta tags in your Rails
@@ -35,6 +35,7 @@ extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
37
  - .gitignore
38
+ - .rspec
38
39
  - Gemfile
39
40
  - LICENSE.txt
40
41
  - README.md
@@ -66,17 +67,17 @@ require_paths:
66
67
  - lib
67
68
  required_ruby_version: !ruby/object:Gem::Requirement
68
69
  requirements:
69
- - - ! '>='
70
+ - - '>='
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
72
73
  required_rubygems_version: !ruby/object:Gem::Requirement
73
74
  requirements:
74
- - - ! '>='
75
+ - - '>='
75
76
  - !ruby/object:Gem::Version
76
77
  version: '0'
77
78
  requirements: []
78
79
  rubyforge_project: metanol
79
- rubygems_version: 2.1.11
80
+ rubygems_version: 2.2.2
80
81
  signing_key:
81
82
  specification_version: 4
82
83
  summary: A <META> tags engine plugin for Rails 3.2+ applications