johnsbrn-has_many_polymorphs 2.13.1 → 2.13.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/generators/tagging/templates/tagging_extensions.rb +47 -3
- data/lib/has_many_polymorphs.rb +1 -1
- data/lib/has_many_polymorphs/autoload.rb +3 -4
- data/test/integration/app/config/environments/development.rb +2 -1
- data/test/setup.rb +2 -2
- data/test/test_helper.rb +1 -1
- metadata +4 -2
data/VERSION.yml
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
class ActiveRecord::Base #:nodoc:
|
3
2
|
|
4
3
|
# These extensions make models taggable. This file is automatically generated and required by your app if you run the tagging generator included with has_many_polymorphs.
|
@@ -13,7 +12,7 @@ class ActiveRecord::Base #:nodoc:
|
|
13
12
|
begin
|
14
13
|
tag = Tag.find_or_create_by_name(tag_name)
|
15
14
|
raise Tag::Error, "tag could not be saved: #{tag_name}" if tag.new_record?
|
16
|
-
|
15
|
+
tags << tag
|
17
16
|
rescue ActiveRecord::StatementInvalid => e
|
18
17
|
raise unless e.to_s =~ /duplicate/i
|
19
18
|
end
|
@@ -66,7 +65,11 @@ class ActiveRecord::Base #:nodoc:
|
|
66
65
|
<%= parent_association_name -%>s.to_s
|
67
66
|
#:startdoc:
|
68
67
|
end
|
69
|
-
|
68
|
+
|
69
|
+
def tag_list=(value)
|
70
|
+
tag_with(value)
|
71
|
+
end
|
72
|
+
|
70
73
|
private
|
71
74
|
|
72
75
|
def tag_cast_to_string obj #:nodoc:
|
@@ -144,6 +147,47 @@ class ActiveRecord::Base #:nodoc:
|
|
144
147
|
|
145
148
|
find_by_sql(sql)
|
146
149
|
end
|
150
|
+
|
151
|
+
def self.tagged_with_any(*tag_list)
|
152
|
+
options = tag_list.last.is_a?(Hash) ? tag_list.pop : {}
|
153
|
+
tag_list = parse_tags(tag_list)
|
154
|
+
|
155
|
+
scope = scope(:find)
|
156
|
+
options[:select] ||= "#{table_name}.*"
|
157
|
+
options[:from] ||= "#{table_name}, meta_tags, taggings"
|
158
|
+
|
159
|
+
sql = "SELECT #{(scope && scope[:select]) || options[:select]} "
|
160
|
+
sql << "FROM #{(scope && scope[:from]) || options[:from]} "
|
161
|
+
|
162
|
+
add_joins!(sql, options, scope)
|
163
|
+
|
164
|
+
sql << "WHERE #{table_name}.#{primary_key} = taggings.taggable_id "
|
165
|
+
sql << "AND taggings.taggable_type = '#{ActiveRecord::Base.send(:class_name_of_active_record_descendant, self).to_s}' "
|
166
|
+
sql << "AND taggings.meta_tag_id = meta_tags.id "
|
167
|
+
|
168
|
+
sql << "AND ("
|
169
|
+
or_options = []
|
170
|
+
tag_list.each do |name|
|
171
|
+
or_options << "meta_tags.name = '#{name}'"
|
172
|
+
end
|
173
|
+
or_options_joined = or_options.join(" OR ")
|
174
|
+
sql << "#{or_options_joined}) "
|
175
|
+
|
176
|
+
|
177
|
+
sql << "AND #{sanitize_sql(options[:conditions])} " if options[:conditions]
|
178
|
+
|
179
|
+
columns = column_names.map do |column|
|
180
|
+
"#{table_name}.#{column}"
|
181
|
+
end.join(", ")
|
182
|
+
|
183
|
+
sql << "GROUP BY #{columns} "
|
184
|
+
|
185
|
+
add_order!(sql, options[:order], scope)
|
186
|
+
add_limit!(sql, options, scope)
|
187
|
+
add_lock!(sql, options, scope)
|
188
|
+
|
189
|
+
find_by_sql(sql)
|
190
|
+
end
|
147
191
|
|
148
192
|
def parse_tags(tags)
|
149
193
|
return [] if tags.blank?
|
data/lib/has_many_polymorphs.rb
CHANGED
@@ -14,7 +14,7 @@ class ActiveRecord::Base
|
|
14
14
|
extend ActiveRecord::Associations::PolymorphicClassMethods
|
15
15
|
end
|
16
16
|
|
17
|
-
if ENV['HMP_DEBUG']
|
17
|
+
if ENV['HMP_DEBUG'] || ENV['RAILS_ENV'] =~ /development|test/ && ENV['USER'] == 'eweaver'
|
18
18
|
require 'has_many_polymorphs/debugging_tools'
|
19
19
|
end
|
20
20
|
|
@@ -1,6 +1,5 @@
|
|
1
|
-
|
2
1
|
require 'initializer' unless defined? ::Rails::Initializer
|
3
|
-
require 'dispatcher' unless defined? ::ActionController::Dispatcher
|
2
|
+
require 'action_controller/dispatcher' unless defined? ::ActionController::Dispatcher
|
4
3
|
|
5
4
|
module HasManyPolymorphs
|
6
5
|
|
@@ -37,7 +36,7 @@ Note that you can override DEFAULT_OPTIONS via Rails::Configuration#has_many_pol
|
|
37
36
|
require requirement
|
38
37
|
end
|
39
38
|
|
40
|
-
Dir
|
39
|
+
Dir.glob(options[:file_pattern]).each do |filename|
|
41
40
|
next if filename =~ /#{options[:file_exclusions].join("|")}/
|
42
41
|
open filename do |file|
|
43
42
|
if file.grep(/#{options[:methods].join("|")}/).any?
|
@@ -64,7 +63,7 @@ class Rails::Initializer #:nodoc:
|
|
64
63
|
alias_method_chain :after_initialize, :autoload
|
65
64
|
end
|
66
65
|
|
67
|
-
Dispatcher.to_prepare(:has_many_polymorphs_autoload) do
|
66
|
+
ActionController::Dispatcher.to_prepare(:has_many_polymorphs_autoload) do
|
68
67
|
# Make sure it gets loaded in the app
|
69
68
|
HasManyPolymorphs.autoload
|
70
69
|
end
|
@@ -3,6 +3,7 @@ config.cache_classes = ENV['PRODUCTION']
|
|
3
3
|
config.whiny_nils = true
|
4
4
|
config.action_controller.consider_all_requests_local = !ENV['PRODUCTION']
|
5
5
|
config.action_controller.perform_caching = ENV['PRODUCTION']
|
6
|
-
|
6
|
+
# The following has been deprecated in Rails 2.1 and removed in 2.2
|
7
|
+
config.action_view.cache_template_extensions = ENV['PRODUCTION'] if Rails::VERSION::MAJOR < 2 or Rails::VERSION::MAJOR == 2 && Rails::VERSION::MINOR < 1
|
7
8
|
config.action_view.debug_rjs = !ENV['PRODUCTION']
|
8
9
|
config.action_mailer.raise_delivery_errors = false
|
data/test/setup.rb
CHANGED
@@ -6,8 +6,8 @@ Dir.chdir "#{File.dirname(__FILE__)}/integration/app/" do
|
|
6
6
|
system("rm has_many_polymorphs; ln -s ../../../../../ has_many_polymorphs")
|
7
7
|
end
|
8
8
|
|
9
|
-
system "rake db:drop
|
10
|
-
system "rake db:create --trace RAILS_GEM_VERSION=2.
|
9
|
+
system "rake db:drop --trace RAILS_GEM_VERSION=2.2.2 "
|
10
|
+
system "rake db:create --trace RAILS_GEM_VERSION=2.2.2 "
|
11
11
|
system "rake db:migrate --trace"
|
12
12
|
system "rake db:fixtures:load --trace"
|
13
13
|
end
|
data/test/test_helper.rb
CHANGED
@@ -23,7 +23,7 @@ LOG = "#{HERE}/integration/app/log/development.log"
|
|
23
23
|
require 'integration/app/config/environment'
|
24
24
|
require 'test_help'
|
25
25
|
|
26
|
-
Inflector.inflections {|i| i.irregular 'fish', 'fish' }
|
26
|
+
ActiveSupport::Inflector.inflections {|i| i.irregular 'fish', 'fish' }
|
27
27
|
|
28
28
|
$LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path = HERE + "/fixtures")
|
29
29
|
$LOAD_PATH.unshift(HERE + "/models")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: johnsbrn-has_many_polymorphs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.13.
|
4
|
+
version: 2.13.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Weaver
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-02-02 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -202,6 +202,8 @@ files:
|
|
202
202
|
- test/integration/app/test/unit/single_sti_parent_test.rb
|
203
203
|
- test/integration/app/test/unit/stick_test.rb
|
204
204
|
- test/integration/app/test/unit/stone_test.rb
|
205
|
+
- test/integration/app/vendor
|
206
|
+
- test/integration/app/vendor/plugins
|
205
207
|
- test/integration/server_test.rb
|
206
208
|
- test/models
|
207
209
|
- test/models/aquatic
|