breadcrumbs_on_rails 2.3.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,64 +1,14 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- require 'appraisal'
1
+ require "bundler/gem_tasks"
2
+ require "appraisal"
4
3
 
5
- $:.unshift(File.dirname(__FILE__) + "/lib")
6
- require 'breadcrumbs_on_rails/version'
7
-
8
-
9
- PKG_NAME = ENV['PKG_NAME'] || "breadcrumbs_on_rails"
10
- PKG_VERSION = ENV['PKG_VERSION'] || BreadcrumbsOnRails::VERSION
11
-
12
-
13
- # Run test by default.
14
- task :default => :test
15
-
16
- spec = Gem::Specification.new do |s|
17
- s.name = PKG_NAME
18
- s.version = PKG_VERSION
19
- s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
20
- s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
21
-
22
- s.author = "Simone Carletti"
23
- s.email = "weppos@weppos.net"
24
- s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
25
-
26
- s.files = `git ls-files`.split("\n")
27
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
28
- s.require_paths = %w( lib )
29
-
30
- s.add_development_dependency "rails", ">= 3.0"
31
- s.add_development_dependency "appraisal"
32
- s.add_development_dependency "mocha", "~> 0.9.10"
33
- s.add_development_dependency "yard"
34
- end
35
-
36
-
37
- require 'rubygems/package_task'
38
-
39
- Gem::PackageTask.new(spec) do |pkg|
40
- pkg.gem_spec = spec
41
- end
42
-
43
- desc "Build the gemspec file #{spec.name}.gemspec"
44
- task :gemspec do
45
- file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
46
- File.open(file, "w") {|f| f << spec.to_ruby }
47
- end
48
-
49
- desc "Remove any temporary products, including gemspec."
50
- task :clean => [:clobber] do
51
- rm "#{spec.name}.gemspec"
4
+ if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
5
+ task default: :appraisal
6
+ else
7
+ task default: :test
52
8
  end
53
9
 
54
- desc "Remove any generated file"
55
- task :clobber => [:clobber_package]
56
-
57
- desc "Package the library and generates the gemspec"
58
- task :package => [:gemspec]
59
-
60
10
 
61
- require 'rake/testtask'
11
+ require "rake/testtask"
62
12
 
63
13
  Rake::TestTask.new do |t|
64
14
  t.libs << "test"
@@ -68,18 +18,10 @@ Rake::TestTask.new do |t|
68
18
  end
69
19
 
70
20
 
71
- require 'yard'
72
- require 'yard/rake/yardoc_task'
21
+ require "yard/rake/yardoc_task"
73
22
 
74
23
  YARD::Rake::YardocTask.new(:yardoc) do |y|
75
24
  y.options = ["--output-dir", "yardoc"]
76
25
  end
77
26
 
78
- namespace :yardoc do
79
- desc "Remove YARD products"
80
- task :clobber do
81
- rm_r "yardoc" rescue nil
82
- end
83
- end
84
-
85
- task :clobber => "yardoc:clobber"
27
+ CLOBBER.include "yardoc"
data/SECURITY.md ADDED
@@ -0,0 +1,104 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ Security updates are provided only for the current minor version.
6
+
7
+ If you are using a previous minor version, we recommend to upgrade to the current minor version.
8
+ This project uses [semantic versioning](https://semver.org/), therefore you can upgrade to a more recent minor version without incurring into breaking changes.
9
+
10
+ Exceptionally, we may support previous minor versions upon request if there are significant reasons preventing to immediately switch the latest minor version.
11
+
12
+ Older major versions are no longer supported.
13
+
14
+
15
+ ## Reporting a Vulnerability
16
+
17
+ To make a report, please email weppos@weppos.net.
18
+
19
+ Please consider encrypting your report with GPG using the key [0x420da82a989398df](https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x420da82a989398df).
20
+
21
+ ```
22
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
23
+
24
+ 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
97
+ =j6Xr
98
+ -----END PGP PUBLIC KEY BLOCK-----
99
+ ```
100
+
101
+
102
+ ## Tracking Security Updates
103
+
104
+ Information about security vulnerabilities are published in the [Security Advisories](https://github.com/weppos/breadcrumbs_on_rails/security/advisories) page.
@@ -1,39 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
3
+ require "breadcrumbs_on_rails/version"
2
4
 
3
- Gem::Specification.new do |s|
4
- s.name = "breadcrumbs_on_rails"
5
- s.version = "2.3.0"
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "breadcrumbs_on_rails"
7
+ spec.version = BreadcrumbsOnRails::VERSION
8
+ spec.authors = ["Simone Carletti"]
9
+ spec.email = ["weppos@weppos.net"]
10
+ spec.homepage = "https://simonecarletti.com/code/breadcrumbs_on_rails"
11
+ spec.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation"
12
+ spec.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
13
+ spec.licenses = ["MIT"]
6
14
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Simone Carletti"]
9
- s.date = "2012-12-25"
10
- s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
11
- s.email = "weppos@weppos.net"
12
- s.files = [".gitignore", ".rvmrc", ".travis.yml", "Appraisals", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "breadcrumbs_on_rails.gemspec", "gemfiles/3.0.gemfile", "gemfiles/3.0.gemfile.lock", "gemfiles/3.1.gemfile", "gemfiles/3.1.gemfile.lock", "gemfiles/3.2.gemfile", "gemfiles/3.2.gemfile.lock", "init.rb", "lib/breadcrumbs_on_rails.rb", "lib/breadcrumbs_on_rails/action_controller.rb", "lib/breadcrumbs_on_rails/breadcrumbs.rb", "lib/breadcrumbs_on_rails/railtie.rb", "lib/breadcrumbs_on_rails/version.rb", "test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
13
- s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
14
- s.require_paths = ["lib"]
15
- s.rubygems_version = "1.8.24"
16
- s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
17
- s.test_files = ["test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
15
+ spec.required_ruby_version = ">= 2.4"
18
16
 
19
- if s.respond_to? :specification_version then
20
- s.specification_version = 3
17
+ spec.require_paths = ["lib"]
18
+ spec.files = `git ls-files`.split("\n")
19
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ spec.extra_rdoc_files = %w( LICENSE.txt )
21
21
 
22
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
23
- s.add_development_dependency(%q<rails>, [">= 3.0"])
24
- s.add_development_dependency(%q<appraisal>, [">= 0"])
25
- s.add_development_dependency(%q<mocha>, ["~> 0.9.10"])
26
- s.add_development_dependency(%q<yard>, [">= 0"])
27
- else
28
- s.add_dependency(%q<rails>, [">= 3.0"])
29
- s.add_dependency(%q<appraisal>, [">= 0"])
30
- s.add_dependency(%q<mocha>, ["~> 0.9.10"])
31
- s.add_dependency(%q<yard>, [">= 0"])
32
- end
33
- else
34
- s.add_dependency(%q<rails>, [">= 3.0"])
35
- s.add_dependency(%q<appraisal>, [">= 0"])
36
- s.add_dependency(%q<mocha>, ["~> 0.9.10"])
37
- s.add_dependency(%q<yard>, [">= 0"])
38
- end
22
+ spec.add_dependency "railties", ">= 5.0"
39
23
  end
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.0.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.1.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.2.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 6.0.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  require 'breadcrumbs_on_rails/breadcrumbs'
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  module BreadcrumbsOnRails
@@ -11,73 +11,56 @@ module BreadcrumbsOnRails
11
11
  module ActionController
12
12
  extend ActiveSupport::Concern
13
13
 
14
- included do
14
+ included do |base|
15
15
  extend ClassMethods
16
16
  helper HelperMethods
17
- helper_method :add_breadcrumb, :breadcrumbs
17
+ helper_method :add_breadcrumb_on_rails, :add_breadcrumb,
18
+ :breadcrumbs_on_rails, :breadcrumbs
19
+
20
+ unless base.respond_to?(:before_action)
21
+ base.alias_method :before_action, :before_filter
22
+ end
18
23
  end
19
24
 
20
25
  protected
21
26
 
22
- def add_breadcrumb(name, path = nil, options = {})
23
- self.breadcrumbs << Breadcrumbs::Element.new(name, path, options)
27
+ # Pushes a new breadcrumb element into the collection.
28
+ #
29
+ # @param name [String]
30
+ # @param path [String, nil]
31
+ # @param options [Hash]
32
+ # @return [void]
33
+ def add_breadcrumb_on_rails(name, path = nil, options = {})
34
+ breadcrumbs_on_rails << Breadcrumbs::Element.new(name, path, options)
24
35
  end
36
+ alias add_breadcrumb add_breadcrumb_on_rails
25
37
 
26
- def breadcrumbs
27
- @breadcrumbs ||= []
38
+ # Gets the list of all breadcrumb element in the collection.
39
+ #
40
+ # @return [Array<Breadcrumbs::Element>]
41
+ def breadcrumbs_on_rails
42
+ @breadcrumbs_on_rails ||= []
28
43
  end
44
+ alias breadcrumbs breadcrumbs_on_rails
29
45
 
30
- module Utils
31
-
32
- def self.instance_proc(string)
33
- if string.kind_of?(String)
34
- proc { |controller| controller.instance_eval(string) }
35
- else
36
- string
37
- end
38
- end
39
-
40
- # This is an horrible method with an horrible name.
41
- #
42
- # convert_to_set_of_strings(nil, [:foo, :bar])
43
- # # => nil
44
- # convert_to_set_of_strings(true, [:foo, :bar])
45
- # # => ["foo", "bar"]
46
- # convert_to_set_of_strings(:foo, [:foo, :bar])
47
- # # => ["foo"]
48
- # convert_to_set_of_strings([:foo, :bar, :baz], [:foo, :bar])
49
- # # => ["foo", "bar", "baz"]
50
- #
51
- def self.convert_to_set_of_strings(value, keys)
52
- if value == true
53
- keys.map(&:to_s).to_set
54
- elsif value
55
- Array(value).map(&:to_s).to_set
56
- end
57
- end
58
-
59
- end
60
46
 
61
47
  module ClassMethods
62
48
 
63
- def add_breadcrumb(name, path = nil, filter_options = {})
64
- # This isn't really nice here
65
- if eval = Utils.convert_to_set_of_strings(filter_options.delete(:eval), %w(name path))
66
- name = Utils.instance_proc(name) if eval.include?("name")
67
- path = Utils.instance_proc(path) if eval.include?("path")
68
- end
49
+ def add_breadcrumb_on_rails(name, path = nil, filter_options = {})
50
+ element_options = filter_options.delete(:options) || {}
69
51
 
70
- before_filter(filter_options) do |controller|
71
- controller.send(:add_breadcrumb, name, path)
52
+ before_action(filter_options) do |controller|
53
+ controller.send(:add_breadcrumb, name, path, element_options)
72
54
  end
73
55
  end
56
+ alias add_breadcrumb add_breadcrumb_on_rails
74
57
 
75
58
  end
76
59
 
77
60
  module HelperMethods
78
61
 
79
62
  def render_breadcrumbs(options = {}, &block)
80
- builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self, breadcrumbs, options)
63
+ builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self, breadcrumbs_on_rails, options)
81
64
  content = builder.render.html_safe
82
65
  if block_given?
83
66
  capture(content, &block)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  module BreadcrumbsOnRails
@@ -93,7 +93,7 @@ module BreadcrumbsOnRails
93
93
  if @options[:tag]
94
94
  @context.content_tag(@options[:tag], content)
95
95
  else
96
- content
96
+ ERB::Util.h(content)
97
97
  end
98
98
  end
99
99
 
@@ -108,14 +108,14 @@ module BreadcrumbsOnRails
108
108
  attr_accessor :name
109
109
  # @return [String] The element/link URL.
110
110
  attr_accessor :path
111
- # @return [Hash] The element/link URL.
111
+ # @return [Hash] The element/link options.
112
112
  attr_accessor :options
113
113
 
114
114
  # Initializes the Element with given parameters.
115
115
  #
116
116
  # @param [String] name The element/link name.
117
117
  # @param [String] path The element/link URL.
118
- # @param [Hash] options The element/link URL.
118
+ # @param [Hash] options The element/link options.
119
119
  # @return [Element]
120
120
  #
121
121
  def initialize(name, path = nil, options = {})