tagliatelle 0.9.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.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +29 -0
  3. data/.rubocop.yml +17 -0
  4. data/Gemfile +12 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +73 -0
  7. data/Rakefile +34 -0
  8. data/db/migrate/1_create_tags_and_taggings.rb +16 -0
  9. data/lib/generators/tagliatelle/install_generator.rb +29 -0
  10. data/lib/tagliatelle.rb +9 -0
  11. data/lib/tagliatelle/tag.rb +15 -0
  12. data/lib/tagliatelle/taggable.rb +29 -0
  13. data/lib/tagliatelle/tagging.rb +12 -0
  14. data/lib/tagliatelle/version.rb +3 -0
  15. data/lib/tasks/tagliatelle_tasks.rake +4 -0
  16. data/tagliatelle.gemspec +24 -0
  17. data/test/dummy/README.rdoc +28 -0
  18. data/test/dummy/Rakefile +6 -0
  19. data/test/dummy/app/assets/images/.keep +0 -0
  20. data/test/dummy/app/assets/javascripts/application.js +13 -0
  21. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  22. data/test/dummy/app/controllers/application_controller.rb +5 -0
  23. data/test/dummy/app/controllers/concerns/.keep +0 -0
  24. data/test/dummy/app/helpers/application_helper.rb +2 -0
  25. data/test/dummy/app/mailers/.keep +0 -0
  26. data/test/dummy/app/models/.keep +0 -0
  27. data/test/dummy/app/models/concerns/.keep +0 -0
  28. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  29. data/test/dummy/bin/bundle +3 -0
  30. data/test/dummy/bin/rails +4 -0
  31. data/test/dummy/bin/rake +4 -0
  32. data/test/dummy/bin/setup +29 -0
  33. data/test/dummy/config.ru +4 -0
  34. data/test/dummy/config/application.rb +26 -0
  35. data/test/dummy/config/boot.rb +5 -0
  36. data/test/dummy/config/database.yml +25 -0
  37. data/test/dummy/config/environment.rb +5 -0
  38. data/test/dummy/config/environments/development.rb +41 -0
  39. data/test/dummy/config/environments/production.rb +79 -0
  40. data/test/dummy/config/environments/test.rb +42 -0
  41. data/test/dummy/config/initializers/assets.rb +11 -0
  42. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  43. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  44. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  45. data/test/dummy/config/initializers/inflections.rb +16 -0
  46. data/test/dummy/config/initializers/mime_types.rb +4 -0
  47. data/test/dummy/config/initializers/session_store.rb +3 -0
  48. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  49. data/test/dummy/config/locales/en.yml +23 -0
  50. data/test/dummy/config/routes.rb +56 -0
  51. data/test/dummy/config/secrets.yml +22 -0
  52. data/test/dummy/lib/assets/.keep +0 -0
  53. data/test/dummy/log/.keep +0 -0
  54. data/test/dummy/public/404.html +67 -0
  55. data/test/dummy/public/422.html +67 -0
  56. data/test/dummy/public/500.html +66 -0
  57. data/test/dummy/public/favicon.ico +0 -0
  58. data/test/taggable_test.rb +56 -0
  59. data/test/test_helper.rb +40 -0
  60. metadata +174 -0
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 98266e7bc6dbd63337598eb29f7091da6d3abbbe481944bc2c43c1fe6ad8be06487ea55ebc7dcc7ec9026da8a44db0844196d005d108e70322a56aa26067985c
15
+
16
+ test:
17
+ secret_key_base: a1f5f39c4977e6fc817f2b085753c6c21f8f0e6e8cd817ef15876e2222e02134420d37c989c06efa61c85621fbc5e8d2e3290ce5b08a3a5498483d034a4b8eb9
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
File without changes
File without changes
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,56 @@
1
+ require "test_helper"
2
+
3
+ class TaggableTest < ActiveSupport::TestCase
4
+ def setup
5
+ @tag_1 = Tag.create!(name: "foo")
6
+ @tag_2 = Tag.create!(name: "bar")
7
+ end
8
+
9
+ def test_tagged_with_tags
10
+ taggable_1 = TaggableObject.create!(tags: [@tag_1])
11
+ taggable_2 = TaggableObject.create!(tags: [@tag_1, @tag_2])
12
+
13
+ assert_equal [taggable_1, taggable_2], TaggableObject.tagged_with([@tag_1]).order(:id)
14
+ assert_equal [taggable_2], TaggableObject.tagged_with([@tag_2]).order(:id)
15
+ assert_equal [taggable_1, taggable_2], TaggableObject.tagged_with([@tag_1, @tag_2]).order(:id)
16
+ end
17
+
18
+ def test_tagged_with_strings
19
+ taggable_1 = TaggableObject.create!(tags: [@tag_1])
20
+ taggable_2 = TaggableObject.create!(tags: [@tag_1, @tag_2])
21
+
22
+ assert_equal [taggable_1, taggable_2], TaggableObject.tagged_with(%w(foo)).order(:id)
23
+ assert_equal [taggable_2], TaggableObject.tagged_with(%w(bar)).order(:id)
24
+ assert_equal [taggable_1, taggable_2], TaggableObject.tagged_with(%w(foo bar)).order(:id)
25
+ end
26
+
27
+ def test_tag_list
28
+ taggable = TaggableObject.create(tags: [@tag_1, @tag_2])
29
+
30
+ assert_equal "foo, bar", taggable.tag_list
31
+ end
32
+
33
+ def test_set_tag_list
34
+ taggable = TaggableObject.new
35
+
36
+ taggable.tag_list = "foo, baz"
37
+
38
+ assert_equal "foo, baz", taggable.tag_list
39
+ end
40
+
41
+ def test_set_tag_list_when_existing_tags
42
+ taggable = TaggableObject.new(tags: [@tag_1])
43
+
44
+ taggable.tag_list = "foo, baz"
45
+
46
+ assert_equal "foo, baz", taggable.tag_list
47
+ end
48
+
49
+ def test_set_tag_list_with_duplicates
50
+ taggable = TaggableObject.new
51
+
52
+ taggable.tag_list = "foo, baz, foo"
53
+
54
+ assert_equal "foo, baz", taggable.tag_list
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
+ require "rails/test_help"
7
+
8
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ ActiveSupport::TestCase.fixtures :all
19
+ end
20
+
21
+ Temping.create :tag do
22
+ with_columns do |t|
23
+ t.string :name
24
+ end
25
+
26
+ include Tagliatelle::Tag
27
+ end
28
+
29
+ Temping.create :tagging do
30
+ with_columns do |t|
31
+ t.references :taggable, polymorphic: true
32
+ t.references :tag
33
+ end
34
+
35
+ include Tagliatelle::Tagging
36
+ end
37
+
38
+ Temping.create :taggable_object do
39
+ include Tagliatelle::Taggable
40
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tagliatelle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Jens Ljungblad
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Simple tagging for Rails 4+
42
+ email:
43
+ - jens.ljungblad@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - ".rubocop.yml"
50
+ - Gemfile
51
+ - MIT-LICENSE
52
+ - README.md
53
+ - Rakefile
54
+ - db/migrate/1_create_tags_and_taggings.rb
55
+ - lib/generators/tagliatelle/install_generator.rb
56
+ - lib/tagliatelle.rb
57
+ - lib/tagliatelle/tag.rb
58
+ - lib/tagliatelle/taggable.rb
59
+ - lib/tagliatelle/tagging.rb
60
+ - lib/tagliatelle/version.rb
61
+ - lib/tasks/tagliatelle_tasks.rake
62
+ - tagliatelle.gemspec
63
+ - test/dummy/README.rdoc
64
+ - test/dummy/Rakefile
65
+ - test/dummy/app/assets/images/.keep
66
+ - test/dummy/app/assets/javascripts/application.js
67
+ - test/dummy/app/assets/stylesheets/application.css
68
+ - test/dummy/app/controllers/application_controller.rb
69
+ - test/dummy/app/controllers/concerns/.keep
70
+ - test/dummy/app/helpers/application_helper.rb
71
+ - test/dummy/app/mailers/.keep
72
+ - test/dummy/app/models/.keep
73
+ - test/dummy/app/models/concerns/.keep
74
+ - test/dummy/app/views/layouts/application.html.erb
75
+ - test/dummy/bin/bundle
76
+ - test/dummy/bin/rails
77
+ - test/dummy/bin/rake
78
+ - test/dummy/bin/setup
79
+ - test/dummy/config.ru
80
+ - test/dummy/config/application.rb
81
+ - test/dummy/config/boot.rb
82
+ - test/dummy/config/database.yml
83
+ - test/dummy/config/environment.rb
84
+ - test/dummy/config/environments/development.rb
85
+ - test/dummy/config/environments/production.rb
86
+ - test/dummy/config/environments/test.rb
87
+ - test/dummy/config/initializers/assets.rb
88
+ - test/dummy/config/initializers/backtrace_silencers.rb
89
+ - test/dummy/config/initializers/cookies_serializer.rb
90
+ - test/dummy/config/initializers/filter_parameter_logging.rb
91
+ - test/dummy/config/initializers/inflections.rb
92
+ - test/dummy/config/initializers/mime_types.rb
93
+ - test/dummy/config/initializers/session_store.rb
94
+ - test/dummy/config/initializers/wrap_parameters.rb
95
+ - test/dummy/config/locales/en.yml
96
+ - test/dummy/config/routes.rb
97
+ - test/dummy/config/secrets.yml
98
+ - test/dummy/lib/assets/.keep
99
+ - test/dummy/log/.keep
100
+ - test/dummy/public/404.html
101
+ - test/dummy/public/422.html
102
+ - test/dummy/public/500.html
103
+ - test/dummy/public/favicon.ico
104
+ - test/taggable_test.rb
105
+ - test/test_helper.rb
106
+ homepage: https://github.com/varvet/tagliatelle
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.2.2
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Simple tagging for Rails 4+
130
+ test_files:
131
+ - test/dummy/README.rdoc
132
+ - test/dummy/Rakefile
133
+ - test/dummy/app/assets/images/.keep
134
+ - test/dummy/app/assets/javascripts/application.js
135
+ - test/dummy/app/assets/stylesheets/application.css
136
+ - test/dummy/app/controllers/application_controller.rb
137
+ - test/dummy/app/controllers/concerns/.keep
138
+ - test/dummy/app/helpers/application_helper.rb
139
+ - test/dummy/app/mailers/.keep
140
+ - test/dummy/app/models/.keep
141
+ - test/dummy/app/models/concerns/.keep
142
+ - test/dummy/app/views/layouts/application.html.erb
143
+ - test/dummy/bin/bundle
144
+ - test/dummy/bin/rails
145
+ - test/dummy/bin/rake
146
+ - test/dummy/bin/setup
147
+ - test/dummy/config.ru
148
+ - test/dummy/config/application.rb
149
+ - test/dummy/config/boot.rb
150
+ - test/dummy/config/database.yml
151
+ - test/dummy/config/environment.rb
152
+ - test/dummy/config/environments/development.rb
153
+ - test/dummy/config/environments/production.rb
154
+ - test/dummy/config/environments/test.rb
155
+ - test/dummy/config/initializers/assets.rb
156
+ - test/dummy/config/initializers/backtrace_silencers.rb
157
+ - test/dummy/config/initializers/cookies_serializer.rb
158
+ - test/dummy/config/initializers/filter_parameter_logging.rb
159
+ - test/dummy/config/initializers/inflections.rb
160
+ - test/dummy/config/initializers/mime_types.rb
161
+ - test/dummy/config/initializers/session_store.rb
162
+ - test/dummy/config/initializers/wrap_parameters.rb
163
+ - test/dummy/config/locales/en.yml
164
+ - test/dummy/config/routes.rb
165
+ - test/dummy/config/secrets.yml
166
+ - test/dummy/lib/assets/.keep
167
+ - test/dummy/log/.keep
168
+ - test/dummy/public/404.html
169
+ - test/dummy/public/422.html
170
+ - test/dummy/public/500.html
171
+ - test/dummy/public/favicon.ico
172
+ - test/taggable_test.rb
173
+ - test/test_helper.rb
174
+ has_rdoc: