parlement 0.10 → 0.11
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.
- data/CHANGES +11 -0
- data/MEMORY +9 -1
- data/README +5 -4
- data/app/controllers/account_controller.rb +10 -13
- data/app/controllers/application.rb +4 -5
- data/app/controllers/elt_controller.rb +9 -7
- data/app/controllers/person_controller.rb +1 -3
- data/app/controllers/subscriber_controller.rb +10 -10
- data/app/helpers/elt_helper.rb +2 -0
- data/app/models/elt.rb +28 -19
- data/app/models/mail.rb +26 -14
- data/app/models/mail_notify.rb +5 -4
- data/app/models/person.rb +11 -2
- data/app/views/account/_login.rhtml +3 -3
- data/app/views/account/_show.rhtml +12 -14
- data/app/views/elt/_choice.rhtml +3 -3
- data/app/views/elt/_elt.rhtml +4 -4
- data/app/views/elt/_list.rhtml +2 -2
- data/app/views/elt/_listByDate.rhtml +1 -1
- data/app/views/elt/_listByVote.rhtml +1 -1
- data/app/views/elt/new.rhtml +3 -3
- data/app/views/elt/show.rhtml +2 -2
- data/app/views/layouts/top.rhtml +6 -0
- data/app/views/mail_notify/publish.text.html.rhtml +1 -1
- data/app/views/person/_listElts.rhtml +5 -3
- data/app/views/person/show.rhtml +1 -2
- data/config/boot.rb +5 -4
- data/config/environment.rb +6 -4
- data/config/routes.rb +3 -2
- data/db/development_structure.sql +15 -4
- data/db/migrate/006_last_activity.rb +10 -0
- data/db/schema.rb +67 -49
- data/public/dispatch.fcgi +1 -0
- data/public/javascripts/controls.js +41 -23
- data/public/javascripts/dragdrop.js +317 -99
- data/public/javascripts/effects.js +301 -166
- data/public/javascripts/prototype.js +932 -402
- data/public/stylesheets/default.css +3 -2
- data/test/unit/elt_test.rb +13 -0
- data/test/unit/mail_test.rb +3 -1
- data/vendor/plugins/engines/CHANGELOG +203 -99
- data/vendor/plugins/engines/MIT-LICENSE +1 -1
- data/vendor/plugins/engines/README +32 -384
- data/vendor/plugins/engines/Rakefile +14 -0
- data/vendor/plugins/engines/UPGRADING +93 -0
- data/vendor/plugins/engines/about.yml +7 -0
- data/vendor/plugins/engines/generators/plugin_migration/USAGE +45 -0
- data/vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb +79 -0
- data/vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb +13 -0
- data/vendor/plugins/engines/init.rb +34 -47
- data/vendor/plugins/engines/install.rb +32 -0
- data/vendor/plugins/engines/lib/engines/{ruby_extensions.rb → deprecated_config_support.rb} +135 -113
- data/vendor/plugins/engines/lib/engines/plugin.rb +214 -0
- data/vendor/plugins/engines/lib/engines/plugin_list.rb +31 -0
- data/vendor/plugins/engines/lib/engines/plugin_migrator.rb +60 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb +19 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb +143 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb +155 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/public_asset_helpers.rb +116 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails.rb +20 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails_initializer.rb +86 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb +77 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions/templates.rb +140 -0
- data/vendor/plugins/engines/lib/engines/rails_extensions.rb +6 -0
- data/vendor/plugins/engines/lib/engines/testing.rb +88 -0
- data/vendor/plugins/engines/lib/engines.rb +281 -425
- data/vendor/plugins/engines/tasks/engines.rake +108 -137
- metadata +218 -250
- data/db/ROOT/perso.txt +0 -214
- data/public/images/indicator.gif +0 -0
- data/public/images/orange_by_darren_Hester_350o.jpg +0 -0
- data/public/images/smile.png +0 -0
- data/vendor/plugins/engines/generators/engine/USAGE +0 -26
- data/vendor/plugins/engines/generators/engine/engine_generator.rb +0 -199
- data/vendor/plugins/engines/generators/engine/templates/README +0 -85
- data/vendor/plugins/engines/generators/engine/templates/init_engine.erb +0 -15
- data/vendor/plugins/engines/generators/engine/templates/install.erb +0 -4
- data/vendor/plugins/engines/generators/engine/templates/lib/engine.erb +0 -6
- data/vendor/plugins/engines/generators/engine/templates/licenses/GPL +0 -18
- data/vendor/plugins/engines/generators/engine/templates/licenses/LGPL +0 -19
- data/vendor/plugins/engines/generators/engine/templates/licenses/MIT +0 -22
- data/vendor/plugins/engines/generators/engine/templates/licenses/None +0 -1
- data/vendor/plugins/engines/generators/engine/templates/public/javascripts/engine.js +0 -0
- data/vendor/plugins/engines/generators/engine/templates/public/stylesheets/engine.css +0 -0
- data/vendor/plugins/engines/generators/engine/templates/tasks/engine.rake +0 -0
- data/vendor/plugins/engines/generators/engine/templates/test/test_helper.erb +0 -17
- data/vendor/plugins/engines/lib/bundles/require_resource.rb +0 -124
- data/vendor/plugins/engines/lib/bundles.rb +0 -77
- data/vendor/plugins/engines/lib/engines/action_mailer_extensions.rb +0 -140
- data/vendor/plugins/engines/lib/engines/action_view_extensions.rb +0 -141
- data/vendor/plugins/engines/lib/engines/active_record_extensions.rb +0 -21
- data/vendor/plugins/engines/lib/engines/dependencies_extensions.rb +0 -129
- data/vendor/plugins/engines/lib/engines/migration_extensions.rb +0 -53
- data/vendor/plugins/engines/lib/engines/routing_extensions.rb +0 -28
- data/vendor/plugins/engines/lib/engines/testing_extensions.rb +0 -327
- data/vendor/plugins/engines/tasks/deprecated_engines.rake +0 -7
- data/vendor/plugins/engines/test/action_view_extensions_test.rb +0 -9
- data/vendor/plugins/engines/test/ruby_extensions_test.rb +0 -115
- data/vendor/plugins/guid/README.TXT +0 -29
- data/vendor/plugins/guid/init.rb +0 -30
- data/vendor/plugins/guid/lib/usesguid.rb +0 -37
- data/vendor/plugins/guid/lib/uuid22.rb +0 -43
- data/vendor/plugins/guid/lib/uuidtools.rb +0 -572
- data/vendor/plugins/responds_to_parent/MIT-LICENSE +0 -20
- data/vendor/plugins/responds_to_parent/README +0 -42
- data/vendor/plugins/responds_to_parent/Rakefile +0 -22
- data/vendor/plugins/responds_to_parent/init.rb +0 -1
- data/vendor/plugins/responds_to_parent/lib/responds_to_parent.rb +0 -46
- data/vendor/plugins/responds_to_parent/test/responds_to_parent_test.rb +0 -115
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module ActionController
|
|
2
|
-
module Routing
|
|
3
|
-
|
|
4
|
-
class << self
|
|
5
|
-
# This holds the global list of valid controller paths
|
|
6
|
-
attr_accessor :controller_paths
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class ControllerComponent
|
|
10
|
-
class << self
|
|
11
|
-
protected
|
|
12
|
-
def safe_load_paths #:nodoc:
|
|
13
|
-
if defined?(RAILS_ROOT)
|
|
14
|
-
paths = $LOAD_PATH.select do |base|
|
|
15
|
-
base = File.expand_path(base)
|
|
16
|
-
# Check that the path matches one of the allowed paths in controller_paths
|
|
17
|
-
base.match(/^#{ActionController::Routing.controller_paths.map { |p| File.expand_path(p) } * '|'}/)
|
|
18
|
-
end
|
|
19
|
-
Engines.log.debug "Engines safe_load_paths: #{paths.inspect}"
|
|
20
|
-
paths
|
|
21
|
-
else
|
|
22
|
-
$LOAD_PATH
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
# The Engines testing extensions enable developers to load fixtures into specific
|
|
2
|
-
# tables irrespective of the name of the fixtures file. This work is heavily based on
|
|
3
|
-
# patches made by Duane Johnson (canadaduane), viewable at
|
|
4
|
-
# http://dev.rubyonrails.org/ticket/1911
|
|
5
|
-
#
|
|
6
|
-
# Engine developers should supply fixture files in the <engine>/test/fixtures directory
|
|
7
|
-
# as normal. Within their tests, they should load the fixtures using the 'fixture' command
|
|
8
|
-
# (rather than the normal 'fixtures' command). For example:
|
|
9
|
-
#
|
|
10
|
-
# class UserTest < Test::Unit::TestCase
|
|
11
|
-
# fixture :users, :table_name => LoginEngine.config(:user_table), :class_name => "User"
|
|
12
|
-
#
|
|
13
|
-
# ...
|
|
14
|
-
#
|
|
15
|
-
# This will ensure that the fixtures/users.yml file will get loaded into the correct
|
|
16
|
-
# table, and will use the correct model object class.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# A FixtureGroup is a set of fixtures identified by a name. Normally, this is the name of the
|
|
21
|
-
# corresponding fixture filename. For example, when you declare the use of fixtures in a
|
|
22
|
-
# TestUnit class, like so:
|
|
23
|
-
# fixtures :users
|
|
24
|
-
# you are creating a FixtureGroup whose name is 'users', and whose defaults are set such that the
|
|
25
|
-
# +class_name+, +file_name+ and +table_name+ are guessed from the FixtureGroup's name.
|
|
26
|
-
class FixtureGroup
|
|
27
|
-
attr_accessor :table_name, :class_name, :connection
|
|
28
|
-
attr_reader :group_name, :file_name
|
|
29
|
-
|
|
30
|
-
def initialize(file_name, optional_names = {})
|
|
31
|
-
self.file_name = file_name
|
|
32
|
-
self.group_name = optional_names[:group_name] || file_name
|
|
33
|
-
if optional_names[:table_name]
|
|
34
|
-
self.table_name = optional_names[:table_name]
|
|
35
|
-
self.class_name = optional_names[:class_name] || Inflector.classify(@table_name.to_s.gsub('.','_'))
|
|
36
|
-
elsif optional_names[:class_name]
|
|
37
|
-
self.class_name = optional_names[:class_name]
|
|
38
|
-
if Object.const_defined?(@class_name)
|
|
39
|
-
model_class = Object.const_get(@class_name)
|
|
40
|
-
self.table_name = ActiveRecord::Base.table_name_prefix + model_class.table_name + ActiveRecord::Base.table_name_suffix
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# In case either :table_name or :class_name was not set:
|
|
45
|
-
self.table_name ||= ActiveRecord::Base.table_name_prefix + @group_name.to_s + ActiveRecord::Base.table_name_suffix
|
|
46
|
-
self.class_name ||= Inflector.classify(@table_name.to_s.gsub('.','_'))
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def file_name=(name)
|
|
50
|
-
@file_name = name.to_s
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def group_name=(name)
|
|
54
|
-
@group_name = name.to_sym
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def class_file_name
|
|
58
|
-
Inflector.underscore(@class_name)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Instantiate an array of FixtureGroup objects from an array of strings (table_names)
|
|
62
|
-
def self.array_from_names(names)
|
|
63
|
-
names.collect { |n| FixtureGroup.new(n) }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def hash
|
|
67
|
-
@group_name.hash
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def eql?(other)
|
|
71
|
-
@group_name.eql? other.group_name
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
class Fixtures < YAML::Omap
|
|
76
|
-
|
|
77
|
-
def self.instantiate_fixtures(object, fixture_group_name, fixtures, load_instances=true)
|
|
78
|
-
old_logger_level = ActiveRecord::Base.logger.level
|
|
79
|
-
ActiveRecord::Base.logger.level = Logger::ERROR
|
|
80
|
-
|
|
81
|
-
# table_name.to_s.gsub('.','_') replaced by 'fixture_group_name'
|
|
82
|
-
object.instance_variable_set "@#{fixture_group_name}", fixtures
|
|
83
|
-
if load_instances
|
|
84
|
-
ActiveRecord::Base.silence do
|
|
85
|
-
fixtures.each do |name, fixture|
|
|
86
|
-
begin
|
|
87
|
-
if model = fixture.find
|
|
88
|
-
object.instance_variable_set "@#{name}", model
|
|
89
|
-
end
|
|
90
|
-
rescue FixtureClassNotFound
|
|
91
|
-
# Let's hope the developer has included it himself
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
ActiveRecord::Base.logger.level = old_logger_level
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# this doesn't really need to be overridden...
|
|
101
|
-
def self.instantiate_all_loaded_fixtures(object, load_instances=true)
|
|
102
|
-
all_loaded_fixtures.each do |fixture_group_name, fixtures|
|
|
103
|
-
Fixtures.instantiate_fixtures(object, fixture_group_name, fixtures, load_instances)
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def self.create_fixtures(fixtures_directory, *fixture_groups)
|
|
108
|
-
connection = block_given? ? yield : ActiveRecord::Base.connection
|
|
109
|
-
fixture_groups.flatten!
|
|
110
|
-
|
|
111
|
-
# Backwards compatibility: Allow an array of table names to be passed in, but just use them
|
|
112
|
-
# to create an array of FixtureGroup objects
|
|
113
|
-
if not fixture_groups.empty? and fixture_groups.first.is_a?(String)
|
|
114
|
-
fixture_groups = FixtureGroup.array_from_names(fixture_groups)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
ActiveRecord::Base.silence do
|
|
118
|
-
fixtures_map = {}
|
|
119
|
-
fixtures = fixture_groups.map do |group|
|
|
120
|
-
fixtures_map[group.group_name] = Fixtures.new(connection, fixtures_directory, group)
|
|
121
|
-
end
|
|
122
|
-
# Make sure all refs to all_loaded_fixtures use group_name as hash index, not table_name
|
|
123
|
-
all_loaded_fixtures.merge! fixtures_map
|
|
124
|
-
|
|
125
|
-
connection.transaction do
|
|
126
|
-
fixtures.reverse.each { |fixture| fixture.delete_existing_fixtures }
|
|
127
|
-
fixtures.each { |fixture| fixture.insert_fixtures }
|
|
128
|
-
|
|
129
|
-
# Cap primary key sequences to max(pk).
|
|
130
|
-
if connection.respond_to?(:reset_pk_sequence!)
|
|
131
|
-
fixture_groups.each do |fg|
|
|
132
|
-
connection.reset_pk_sequence!(fg.table_name)
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
return fixtures.size > 1 ? fixtures : fixtures.first
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
attr_accessor :connection, :fixtures_directory, :file_filter
|
|
143
|
-
attr_accessor :fixture_group
|
|
144
|
-
|
|
145
|
-
def initialize(connection, fixtures_directory, fixture_group, file_filter = DEFAULT_FILTER_RE)
|
|
146
|
-
@connection, @fixtures_directory = connection, fixtures_directory
|
|
147
|
-
@fixture_group = fixture_group
|
|
148
|
-
@file_filter = file_filter
|
|
149
|
-
read_fixture_files
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def delete_existing_fixtures
|
|
153
|
-
@connection.delete "DELETE FROM #{@fixture_group.table_name}", 'Fixture Delete'
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def insert_fixtures
|
|
157
|
-
values.each do |fixture|
|
|
158
|
-
@connection.execute "INSERT INTO #{@fixture_group.table_name} (#{fixture.key_list}) VALUES (#{fixture.value_list})", 'Fixture Insert'
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
private
|
|
163
|
-
def read_fixture_files
|
|
164
|
-
if File.file?(yaml_file_path)
|
|
165
|
-
read_yaml_fixture_files
|
|
166
|
-
elsif File.file?(csv_file_path)
|
|
167
|
-
read_csv_fixture_files
|
|
168
|
-
elsif File.file?(deprecated_yaml_file_path)
|
|
169
|
-
raise Fixture::FormatError, ".yml extension required: rename #{deprecated_yaml_file_path} to #{yaml_file_path}"
|
|
170
|
-
elsif File.directory?(single_file_fixtures_path)
|
|
171
|
-
read_standard_fixture_files
|
|
172
|
-
else
|
|
173
|
-
raise Fixture::FixtureError, "Couldn't find a yaml, csv or standard file to load at #{@fixtures_directory} (#{@fixture_group.file_name})."
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
def read_yaml_fixture_files
|
|
178
|
-
# YAML fixtures
|
|
179
|
-
begin
|
|
180
|
-
if yaml = YAML::load(erb_render(IO.read(yaml_file_path)))
|
|
181
|
-
yaml = yaml.value if yaml.respond_to?(:type_id) and yaml.respond_to?(:value)
|
|
182
|
-
yaml.each do |name, data|
|
|
183
|
-
self[name] = Fixture.new(data, fixture_group.class_name)
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
rescue Exception=>boom
|
|
187
|
-
raise Fixture::FormatError, "a YAML error occured parsing #{yaml_file_path}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n #{boom.class}: #{boom}"
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
def read_csv_fixture_files
|
|
192
|
-
# CSV fixtures
|
|
193
|
-
reader = CSV::Reader.create(erb_render(IO.read(csv_file_path)))
|
|
194
|
-
header = reader.shift
|
|
195
|
-
i = 0
|
|
196
|
-
reader.each do |row|
|
|
197
|
-
data = {}
|
|
198
|
-
row.each_with_index { |cell, j| data[header[j].to_s.strip] = cell.to_s.strip }
|
|
199
|
-
self["#{@fixture_group.class_file_name}_#{i+=1}"]= Fixture.new(data, @fixture_group.class_name)
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
def read_standard_fixture_files
|
|
204
|
-
# Standard fixtures
|
|
205
|
-
path = File.join(@fixtures_directory, @fixture_group.file_name)
|
|
206
|
-
Dir.entries(path).each do |file|
|
|
207
|
-
path = File.join(@fixtures_directory, @fixture_group.file_name, file)
|
|
208
|
-
if File.file?(path) and file !~ @file_filter
|
|
209
|
-
self[file] = Fixture.new(path, @fixture_group.class_name)
|
|
210
|
-
end
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
def yaml_file_path
|
|
215
|
-
fixture_path_with_extension ".yml"
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
def deprecated_yaml_file_path
|
|
219
|
-
fixture_path_with_extension ".yaml"
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
def csv_file_path
|
|
223
|
-
fixture_path_with_extension ".csv"
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
def single_file_fixtures_path
|
|
227
|
-
fixture_path_with_extension ""
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
def fixture_path_with_extension(ext)
|
|
231
|
-
File.join(@fixtures_directory, @fixture_group.file_name + ext)
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
def erb_render(fixture_content)
|
|
235
|
-
ERB.new(fixture_content).result
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
module Test #:nodoc:
|
|
241
|
-
module Unit #:nodoc:
|
|
242
|
-
class TestCase #:nodoc:
|
|
243
|
-
cattr_accessor :fixtures_directory
|
|
244
|
-
class_inheritable_accessor :fixture_groups
|
|
245
|
-
class_inheritable_accessor :fixture_table_names
|
|
246
|
-
class_inheritable_accessor :use_transactional_fixtures
|
|
247
|
-
class_inheritable_accessor :use_instantiated_fixtures # true, false, or :no_instances
|
|
248
|
-
class_inheritable_accessor :pre_loaded_fixtures
|
|
249
|
-
|
|
250
|
-
self.fixture_groups = []
|
|
251
|
-
self.use_transactional_fixtures = false
|
|
252
|
-
self.use_instantiated_fixtures = true
|
|
253
|
-
self.pre_loaded_fixtures = false
|
|
254
|
-
|
|
255
|
-
@@already_loaded_fixtures = {}
|
|
256
|
-
|
|
257
|
-
# Backwards compatibility
|
|
258
|
-
def self.fixture_path=(path); self.fixtures_directory = path; end
|
|
259
|
-
def self.fixture_path; self.fixtures_directory; end
|
|
260
|
-
def fixture_group_names; fixture_groups.collect { |g| g.group_name }; end
|
|
261
|
-
def fixture_table_names; fixture_group_names; end
|
|
262
|
-
|
|
263
|
-
def self.fixture(file_name, options = {})
|
|
264
|
-
self.fixture_groups |= [FixtureGroup.new(file_name, options)]
|
|
265
|
-
require_fixture_classes
|
|
266
|
-
setup_fixture_accessors
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
def self.fixtures(*file_names)
|
|
270
|
-
self.fixture_groups |= FixtureGroup.array_from_names(file_names.flatten)
|
|
271
|
-
require_fixture_classes
|
|
272
|
-
setup_fixture_accessors
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
def self.require_fixture_classes(fixture_groups_override = nil)
|
|
276
|
-
(fixture_groups_override || fixture_groups).each do |group|
|
|
277
|
-
begin
|
|
278
|
-
require group.class_file_name
|
|
279
|
-
rescue LoadError
|
|
280
|
-
# Let's hope the developer has included it himself
|
|
281
|
-
end
|
|
282
|
-
end
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
def self.setup_fixture_accessors(fixture_groups_override=nil)
|
|
286
|
-
(fixture_groups_override || fixture_groups).each do |group|
|
|
287
|
-
define_method(group.group_name) do |fixture, *optionals|
|
|
288
|
-
force_reload = optionals.shift
|
|
289
|
-
@fixture_cache[group.group_name] ||= Hash.new
|
|
290
|
-
@fixture_cache[group.group_name][fixture] = nil if force_reload
|
|
291
|
-
@fixture_cache[group.group_name][fixture] ||= @loaded_fixtures[group.group_name][fixture.to_s].find
|
|
292
|
-
end
|
|
293
|
-
end
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
private
|
|
297
|
-
def load_fixtures
|
|
298
|
-
@loaded_fixtures = {}
|
|
299
|
-
fixtures = Fixtures.create_fixtures(fixtures_directory, fixture_groups)
|
|
300
|
-
unless fixtures.nil?
|
|
301
|
-
if fixtures.instance_of?(Fixtures)
|
|
302
|
-
@loaded_fixtures[fixtures.fixture_group.group_name] = fixtures
|
|
303
|
-
else
|
|
304
|
-
fixtures.each { |f| @loaded_fixtures[f.fixture_group.group_name] = f }
|
|
305
|
-
end
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
def instantiate_fixtures
|
|
310
|
-
if pre_loaded_fixtures
|
|
311
|
-
raise RuntimeError, 'Load fixtures before instantiating them.' if Fixtures.all_loaded_fixtures.empty?
|
|
312
|
-
unless @@required_fixture_classes
|
|
313
|
-
groups = Fixtures.all_loaded_fixtures.values.collect { |f| f.group_name }
|
|
314
|
-
self.class.require_fixture_classes groups
|
|
315
|
-
@@required_fixture_classes = true
|
|
316
|
-
end
|
|
317
|
-
Fixtures.instantiate_all_loaded_fixtures(self, load_instances?)
|
|
318
|
-
else
|
|
319
|
-
raise RuntimeError, 'Load fixtures before instantiating them.' if @loaded_fixtures.nil?
|
|
320
|
-
@loaded_fixtures.each do |fixture_group_name, fixtures|
|
|
321
|
-
Fixtures.instantiate_fixtures(self, fixture_group_name, fixtures, load_instances?)
|
|
322
|
-
end
|
|
323
|
-
end
|
|
324
|
-
end
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
end
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Old-style engines rake tasks.
|
|
2
|
-
# NOTE: THESE ARE DEPRICATED! PLEASE USE THE NEW STYLE!
|
|
3
|
-
|
|
4
|
-
task :engine_info => "engines:info"
|
|
5
|
-
task :engine_migrate => "db:migrate:engines"
|
|
6
|
-
task :enginedoc => "doc:engines"
|
|
7
|
-
task :load_plugin_fixtures => "db:fixtures:engines:load"
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../../../config/environment')
|
|
3
|
-
require 'test_help'
|
|
4
|
-
|
|
5
|
-
class RubyExtensionsTest < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
def setup
|
|
8
|
-
# create the module to be used for config testing
|
|
9
|
-
eval "module TestModule end"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def teardown
|
|
13
|
-
# remove the TestModule constant from our scope
|
|
14
|
-
self.class.class_eval { remove_const :TestModule }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
#
|
|
19
|
-
# Module.config
|
|
20
|
-
#
|
|
21
|
-
|
|
22
|
-
def test_config_no_arguments
|
|
23
|
-
assert_raise(RuntimeError) { TestModule.config }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_config_array_arguments
|
|
27
|
-
TestModule.config :monkey, 123
|
|
28
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_config_hash_arguments
|
|
32
|
-
TestModule.config :monkey => 123, :donkey => 456
|
|
33
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
34
|
-
assert_equal(456, TestModule.config(:donkey))
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_config_can_store_hash
|
|
38
|
-
TestModule.config :hash, :key1 => 'val1', :key2 => 'val2'
|
|
39
|
-
assert_equal({:key1 => 'val1', :key2 => 'val2'}, TestModule.config(:hash))
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_config_cant_overwrite_existing_config_values
|
|
43
|
-
TestModule.config :monkey, 123
|
|
44
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
45
|
-
TestModule.config :monkey, 456
|
|
46
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
47
|
-
|
|
48
|
-
TestModule.config :monkey => 456
|
|
49
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
50
|
-
|
|
51
|
-
# in this case, the resulting Hash only has {:baboon => "goodbye!"} - that's Ruby, users beware.
|
|
52
|
-
TestModule.config :baboon => "hello", :baboon => "goodbye!"
|
|
53
|
-
assert_equal("goodbye!", TestModule.config(:baboon))
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_config_force_new_value
|
|
57
|
-
TestModule.config :monkey, 123
|
|
58
|
-
TestModule.config :man, 321
|
|
59
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
60
|
-
assert_equal(321, TestModule.config(:man))
|
|
61
|
-
TestModule.config :monkey, 456, :force
|
|
62
|
-
assert_equal(456, TestModule.config(:monkey))
|
|
63
|
-
TestModule.config :monkey => 456, :man => 654, :force => true
|
|
64
|
-
assert_equal(456, TestModule.config(:monkey))
|
|
65
|
-
assert_equal(654, TestModule.config(:man))
|
|
66
|
-
TestModule.config :monkey => 789, :man => 987, :force => false
|
|
67
|
-
assert_equal(456, TestModule.config(:monkey))
|
|
68
|
-
assert_equal(654, TestModule.config(:man))
|
|
69
|
-
|
|
70
|
-
TestModule.config :hash, :key1 => 'val1', :key2 => 'val2'
|
|
71
|
-
assert_equal({:key1 => 'val1', :key2 => 'val2'}, TestModule.config(:hash))
|
|
72
|
-
TestModule.config :hash => {:key1 => 'val3', :key2 => 'val4'}, :force => true
|
|
73
|
-
assert_equal({:key1 => 'val3', :key2 => 'val4'}, TestModule.config(:hash))
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# this test is somewhat redundant, but it might be an idea to havbe it explictly anyway
|
|
77
|
-
def test_config_get_values
|
|
78
|
-
TestModule.config :monkey, 123
|
|
79
|
-
assert_equal(123, TestModule.config(:monkey))
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def test_config_get_multiple_values
|
|
83
|
-
TestModule.config :monkey, 123
|
|
84
|
-
TestModule.config :donkey, 456
|
|
85
|
-
assert_equal([123, 456], TestModule.config([:monkey, :donkey]))
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Module.default_constant
|
|
91
|
-
#
|
|
92
|
-
|
|
93
|
-
def test_default_constant_set
|
|
94
|
-
TestModule.default_constant :Monkey, 123
|
|
95
|
-
assert_equal(123, TestModule::Monkey)
|
|
96
|
-
TestModule.default_constant "Hello", 456
|
|
97
|
-
assert_equal(456, TestModule::Hello)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def test_default_constant_cannot_set_again
|
|
101
|
-
TestModule.default_constant :Monkey, 789
|
|
102
|
-
assert_equal(789, TestModule::Monkey)
|
|
103
|
-
TestModule.default_constant :Monkey, 456
|
|
104
|
-
assert_equal(789, TestModule::Monkey)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def test_default_constant_bad_arguments
|
|
108
|
-
# constant names must be Captialized
|
|
109
|
-
assert_raise(NameError) { TestModule.default_constant :lowercase_name, 123 }
|
|
110
|
-
|
|
111
|
-
# constant names should be given as Strings or Symbols
|
|
112
|
-
assert_raise(RuntimeError) { TestModule.default_constant 123, 456 }
|
|
113
|
-
assert_raise(RuntimeError) { TestModule.default_constant Object.new, 456 }
|
|
114
|
-
end
|
|
115
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# This plugin for ActiveRecord makes the "ID" field into a URL-safe GUID
|
|
2
|
-
# It is a mashup by Andy Singleton <andy@assembla.com> that includes
|
|
3
|
-
# * the UUID class from Bob Aman.
|
|
4
|
-
# * the plugin skeleton from Demetrius Nunes
|
|
5
|
-
# * the 22 character URL-safe format from Andy Singleton
|
|
6
|
-
# You can get standard 36 char UUID formats instead
|
|
7
|
-
# TODO: Auto-detect a character ID field and use a GUID in this case (DRY principle)
|
|
8
|
-
#
|
|
9
|
-
# This library is free software; you can redistribute it and/or modify it
|
|
10
|
-
# under the terms of the MIT license.
|
|
11
|
-
#
|
|
12
|
-
# TO USE
|
|
13
|
-
# Install as a plugin in the rails directory vendor/plugin/guid
|
|
14
|
-
# define ID as char(22)
|
|
15
|
-
# call "usesguid" in ActiveRecord class declaration, like
|
|
16
|
-
class Mymodel < ActiveRecord::Base
|
|
17
|
-
usesguid
|
|
18
|
-
|
|
19
|
-
# if your ID field is not called "ID", call "usesguid :column =>'IdColumnName' "
|
|
20
|
-
|
|
21
|
-
# if you create your tables with migrations, you need to bypass the rails default primary key index. Do this:
|
|
22
|
-
|
|
23
|
-
create_table :mytable, :id => false do |t|
|
|
24
|
-
t.column :id, :string, :limit => 22
|
|
25
|
-
... more fields
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
execute "ALTER TABLE mytable ADD PRIMARY KEY (id)"
|
|
29
|
-
|
data/vendor/plugins/guid/init.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2005 Assembla, Inc.
|
|
2
|
-
#
|
|
3
|
-
# This plugin for ActiveRecord makes the "ID" field into a URL-safe GUID
|
|
4
|
-
# It is a mashup by Andy Singleton <andy@assembla.com> that includes
|
|
5
|
-
# * the UUID class from Bob Aman.
|
|
6
|
-
# * the plugin skeleton from Demetrius Nunes
|
|
7
|
-
# * the 22 character URL-safe format from Andy Singleton
|
|
8
|
-
# You can get standard 36 char UUID formats instead
|
|
9
|
-
# TODO: Auto-detect a character ID field and use a GUID in this case (DRY principle)
|
|
10
|
-
#
|
|
11
|
-
# This library is free software; you can redistribute it and/or modify it
|
|
12
|
-
# under the terms of the MIT license.
|
|
13
|
-
#
|
|
14
|
-
# TO USE
|
|
15
|
-
# Install as a plugin in the rails directory vendor/plugin/guid
|
|
16
|
-
# define ID as char(22)
|
|
17
|
-
# call "usesguid" in ActiveRecord class declaration, like
|
|
18
|
-
# class Mymodel < ActiveRecord::Base
|
|
19
|
-
# usesguid
|
|
20
|
-
#
|
|
21
|
-
# if your ID field is not called "ID", call "usesguid :column =>'IdColumnName' "
|
|
22
|
-
|
|
23
|
-
# if you create your tables with migrations, you need to bypass the rails default primary key index. Do this:
|
|
24
|
-
# create_table :mytable, :id => false do |t|
|
|
25
|
-
# t.column :id, :string, :limit => 22
|
|
26
|
-
# ... more fields
|
|
27
|
-
# end
|
|
28
|
-
# execute "ALTER TABLE mytable ADD PRIMARY KEY (id)"
|
|
29
|
-
|
|
30
|
-
require 'usesguid'
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# from Demetrio Nunes
|
|
2
|
-
# Modified by Andy Singleton to use different GUID generator
|
|
3
|
-
#
|
|
4
|
-
# MIT License
|
|
5
|
-
|
|
6
|
-
require 'uuid22'
|
|
7
|
-
|
|
8
|
-
module ActiveRecord
|
|
9
|
-
module Usesguid #:nodoc:
|
|
10
|
-
|
|
11
|
-
def self.append_features(base)
|
|
12
|
-
super
|
|
13
|
-
base.extend(ClassMethods)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
module ClassMethods
|
|
18
|
-
|
|
19
|
-
def usesguid(options = {})
|
|
20
|
-
|
|
21
|
-
class_eval do
|
|
22
|
-
set_primary_key options[:column] if options[:column]
|
|
23
|
-
|
|
24
|
-
def after_initialize
|
|
25
|
-
self.id ||= UUID.timestamp_create().to_s22
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
ActiveRecord::Base.class_eval do
|
|
36
|
-
include ActiveRecord::Usesguid
|
|
37
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2005 Assembla, Inc.
|
|
2
|
-
# MIT License
|
|
3
|
-
|
|
4
|
-
require 'uuidtools'
|
|
5
|
-
|
|
6
|
-
class UUID
|
|
7
|
-
|
|
8
|
-
# Make an array of 64 URL-safe characters
|
|
9
|
-
@@chars64=('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a + ['-','_']
|
|
10
|
-
#return a 22 byte URL-safe string, encoded six bits at a time using 64 characters
|
|
11
|
-
def to_s22
|
|
12
|
-
integer=self.to_i
|
|
13
|
-
rval=''
|
|
14
|
-
22.times do
|
|
15
|
-
c=(integer & 0x3F)
|
|
16
|
-
rval+=@@chars64[c]
|
|
17
|
-
integer =integer >> 6
|
|
18
|
-
end
|
|
19
|
-
return rval.reverse
|
|
20
|
-
end
|
|
21
|
-
# Create a new UUID from a 22char string
|
|
22
|
-
def self.parse22(s)
|
|
23
|
-
# get the integer representation
|
|
24
|
-
integer=0
|
|
25
|
-
s.each_byte {|c|
|
|
26
|
-
integer = integer << 6
|
|
27
|
-
pos=@@chars64.index(c.chr)
|
|
28
|
-
integer+=pos
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
time_low = (integer >> 96) & 0xFFFFFFFF
|
|
32
|
-
time_mid = (integer >> 80) & 0xFFFF
|
|
33
|
-
time_hi_and_version = (integer >> 64) & 0xFFFF
|
|
34
|
-
clock_seq_hi_and_reserved = (integer >> 56) & 0xFF
|
|
35
|
-
clock_seq_low = (integer >> 48) & 0xFF
|
|
36
|
-
nodes = []
|
|
37
|
-
for i in 0..5 do
|
|
38
|
-
nodes << ((integer >> (40 - (i * 8))) & 0xFF)
|
|
39
|
-
end
|
|
40
|
-
return new(time_low, time_mid, time_hi_and_version,
|
|
41
|
-
clock_seq_hi_and_reserved, clock_seq_low, nodes)
|
|
42
|
-
end
|
|
43
|
-
end
|