yodel 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +9 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +63 -0
- data/LICENSE +1 -0
- data/README.rdoc +20 -0
- data/Rakefile +1 -0
- data/bin/yodel +4 -0
- data/lib/yodel.rb +22 -0
- data/lib/yodel/application/application.rb +44 -0
- data/lib/yodel/application/extension.rb +59 -0
- data/lib/yodel/application/request_handler.rb +48 -0
- data/lib/yodel/application/yodel.rb +25 -0
- data/lib/yodel/command/command.rb +94 -0
- data/lib/yodel/command/deploy.rb +67 -0
- data/lib/yodel/command/dns_server.rb +16 -0
- data/lib/yodel/command/installer.rb +229 -0
- data/lib/yodel/config/config.rb +30 -0
- data/lib/yodel/config/environment.rb +16 -0
- data/lib/yodel/config/yodel.rb +21 -0
- data/lib/yodel/exceptions/destroyed_record.rb +2 -0
- data/lib/yodel/exceptions/domain_not_found.rb +16 -0
- data/lib/yodel/exceptions/duplicate_layout.rb +2 -0
- data/lib/yodel/exceptions/exceptions.rb +3 -0
- data/lib/yodel/exceptions/inconsistent_lock_state.rb +2 -0
- data/lib/yodel/exceptions/invalid_field.rb +2 -0
- data/lib/yodel/exceptions/invalid_index.rb +2 -0
- data/lib/yodel/exceptions/invalid_mixin.rb +2 -0
- data/lib/yodel/exceptions/invalid_model_field.rb +2 -0
- data/lib/yodel/exceptions/layout_not_found.rb +2 -0
- data/lib/yodel/exceptions/mass_assignment.rb +2 -0
- data/lib/yodel/exceptions/missing_migration.rb +2 -0
- data/lib/yodel/exceptions/missing_root_directory.rb +15 -0
- data/lib/yodel/exceptions/unable_to_acquire_lock.rb +2 -0
- data/lib/yodel/exceptions/unauthorised.rb +2 -0
- data/lib/yodel/exceptions/unknown_field.rb +2 -0
- data/lib/yodel/middleware/development_server.rb +180 -0
- data/lib/yodel/middleware/error_pages.rb +72 -0
- data/lib/yodel/middleware/public_assets.rb +78 -0
- data/lib/yodel/middleware/request.rb +16 -0
- data/lib/yodel/middleware/site_detector.rb +22 -0
- data/lib/yodel/mime_types/default_mime_set.rb +28 -0
- data/lib/yodel/mime_types/mime_type.rb +68 -0
- data/lib/yodel/mime_types/mime_type_set.rb +41 -0
- data/lib/yodel/mime_types/mime_types.rb +6 -0
- data/lib/yodel/mime_types/yodel.rb +15 -0
- data/lib/yodel/models/api/api.rb +1 -0
- data/lib/yodel/models/api/api_call.rb +87 -0
- data/lib/yodel/models/core/associations/association.rb +37 -0
- data/lib/yodel/models/core/associations/associations.rb +22 -0
- data/lib/yodel/models/core/associations/counts/many_association.rb +18 -0
- data/lib/yodel/models/core/associations/counts/one_association.rb +22 -0
- data/lib/yodel/models/core/associations/embedded/embedded_association.rb +47 -0
- data/lib/yodel/models/core/associations/embedded/embedded_record_array.rb +12 -0
- data/lib/yodel/models/core/associations/embedded/many_embedded_association.rb +62 -0
- data/lib/yodel/models/core/associations/embedded/one_embedded_association.rb +49 -0
- data/lib/yodel/models/core/associations/query/many_query_association.rb +10 -0
- data/lib/yodel/models/core/associations/query/one_query_association.rb +10 -0
- data/lib/yodel/models/core/associations/query/query_association.rb +64 -0
- data/lib/yodel/models/core/associations/record_association.rb +38 -0
- data/lib/yodel/models/core/associations/store/many_store_association.rb +32 -0
- data/lib/yodel/models/core/associations/store/one_store_association.rb +14 -0
- data/lib/yodel/models/core/associations/store/store_association.rb +51 -0
- data/lib/yodel/models/core/attachments/attachment.rb +73 -0
- data/lib/yodel/models/core/attachments/image.rb +38 -0
- data/lib/yodel/models/core/core.rb +15 -0
- data/lib/yodel/models/core/fields/alias_field.rb +32 -0
- data/lib/yodel/models/core/fields/array_field.rb +64 -0
- data/lib/yodel/models/core/fields/attachment_field.rb +42 -0
- data/lib/yodel/models/core/fields/boolean_field.rb +28 -0
- data/lib/yodel/models/core/fields/change_sensitive_array.rb +96 -0
- data/lib/yodel/models/core/fields/change_sensitive_hash.rb +53 -0
- data/lib/yodel/models/core/fields/color_field.rb +4 -0
- data/lib/yodel/models/core/fields/date_field.rb +35 -0
- data/lib/yodel/models/core/fields/decimal_field.rb +19 -0
- data/lib/yodel/models/core/fields/email_field.rb +10 -0
- data/lib/yodel/models/core/fields/enum_field.rb +33 -0
- data/lib/yodel/models/core/fields/field.rb +154 -0
- data/lib/yodel/models/core/fields/fields.rb +29 -0
- data/lib/yodel/models/core/fields/fields_field.rb +31 -0
- data/lib/yodel/models/core/fields/filter_mixin.rb +9 -0
- data/lib/yodel/models/core/fields/filtered_string_field.rb +5 -0
- data/lib/yodel/models/core/fields/filtered_text_field.rb +5 -0
- data/lib/yodel/models/core/fields/function_field.rb +28 -0
- data/lib/yodel/models/core/fields/hash_field.rb +54 -0
- data/lib/yodel/models/core/fields/html_field.rb +15 -0
- data/lib/yodel/models/core/fields/image_field.rb +11 -0
- data/lib/yodel/models/core/fields/integer_field.rb +25 -0
- data/lib/yodel/models/core/fields/password_field.rb +21 -0
- data/lib/yodel/models/core/fields/self_field.rb +27 -0
- data/lib/yodel/models/core/fields/string_field.rb +15 -0
- data/lib/yodel/models/core/fields/tags_field.rb +7 -0
- data/lib/yodel/models/core/fields/text_field.rb +7 -0
- data/lib/yodel/models/core/fields/time_field.rb +36 -0
- data/lib/yodel/models/core/functions/function.rb +471 -0
- data/lib/yodel/models/core/functions/functions.rb +2 -0
- data/lib/yodel/models/core/functions/trigger.rb +14 -0
- data/lib/yodel/models/core/log/log.rb +33 -0
- data/lib/yodel/models/core/log/log_entry.rb +12 -0
- data/lib/yodel/models/core/model/abstract_model.rb +59 -0
- data/lib/yodel/models/core/model/model.rb +460 -0
- data/lib/yodel/models/core/model/mongo_model.rb +25 -0
- data/lib/yodel/models/core/model/site_model.rb +17 -0
- data/lib/yodel/models/core/mongo/mongo.rb +3 -0
- data/lib/yodel/models/core/mongo/primary_key_factory.rb +12 -0
- data/lib/yodel/models/core/mongo/query.rb +68 -0
- data/lib/yodel/models/core/mongo/record_index.rb +89 -0
- data/lib/yodel/models/core/record/abstract_record.rb +411 -0
- data/lib/yodel/models/core/record/embedded_record.rb +47 -0
- data/lib/yodel/models/core/record/mongo_record.rb +83 -0
- data/lib/yodel/models/core/record/record.rb +386 -0
- data/lib/yodel/models/core/record/section.rb +21 -0
- data/lib/yodel/models/core/record/site_record.rb +31 -0
- data/lib/yodel/models/core/site/migration.rb +52 -0
- data/lib/yodel/models/core/site/remote.rb +61 -0
- data/lib/yodel/models/core/site/site.rb +202 -0
- data/lib/yodel/models/core/validations/email_address_validation.rb +24 -0
- data/lib/yodel/models/core/validations/embedded_records_validation.rb +31 -0
- data/lib/yodel/models/core/validations/errors.rb +51 -0
- data/lib/yodel/models/core/validations/excluded_from_validation.rb +10 -0
- data/lib/yodel/models/core/validations/excludes_combinations_validation.rb +18 -0
- data/lib/yodel/models/core/validations/format_validation.rb +10 -0
- data/lib/yodel/models/core/validations/included_in_validation.rb +10 -0
- data/lib/yodel/models/core/validations/includes_combinations_validation.rb +14 -0
- data/lib/yodel/models/core/validations/length_validation.rb +28 -0
- data/lib/yodel/models/core/validations/password_confirmation_validation.rb +11 -0
- data/lib/yodel/models/core/validations/required_validation.rb +9 -0
- data/lib/yodel/models/core/validations/unique_validation.rb +9 -0
- data/lib/yodel/models/core/validations/validation.rb +39 -0
- data/lib/yodel/models/core/validations/validations.rb +15 -0
- data/lib/yodel/models/email/email.rb +79 -0
- data/lib/yodel/models/migrations/01_record_model.rb +29 -0
- data/lib/yodel/models/migrations/02_page_model.rb +45 -0
- data/lib/yodel/models/migrations/03_layout_model.rb +38 -0
- data/lib/yodel/models/migrations/04_group_model.rb +61 -0
- data/lib/yodel/models/migrations/05_user_model.rb +24 -0
- data/lib/yodel/models/migrations/06_snippet_model.rb +13 -0
- data/lib/yodel/models/migrations/07_search_page_model.rb +32 -0
- data/lib/yodel/models/migrations/08_default_site_options.rb +21 -0
- data/lib/yodel/models/migrations/09_security_page_models.rb +36 -0
- data/lib/yodel/models/migrations/10_record_proxy_page_model.rb +17 -0
- data/lib/yodel/models/migrations/11_email_model.rb +28 -0
- data/lib/yodel/models/migrations/12_api_call_model.rb +23 -0
- data/lib/yodel/models/migrations/13_redirect_page_model.rb +13 -0
- data/lib/yodel/models/migrations/14_menu_model.rb +20 -0
- data/lib/yodel/models/models.rb +8 -0
- data/lib/yodel/models/pages/form_builder.rb +379 -0
- data/lib/yodel/models/pages/html_decorator.rb +132 -0
- data/lib/yodel/models/pages/layout.rb +120 -0
- data/lib/yodel/models/pages/menu.rb +32 -0
- data/lib/yodel/models/pages/page.rb +378 -0
- data/lib/yodel/models/pages/pages.rb +7 -0
- data/lib/yodel/models/pages/record_proxy_page.rb +188 -0
- data/lib/yodel/models/pages/redirect_page.rb +11 -0
- data/lib/yodel/models/search/search.rb +1 -0
- data/lib/yodel/models/search/search_page.rb +58 -0
- data/lib/yodel/models/security/facebook_login_page.rb +55 -0
- data/lib/yodel/models/security/group.rb +10 -0
- data/lib/yodel/models/security/guests_group.rb +5 -0
- data/lib/yodel/models/security/login_page.rb +20 -0
- data/lib/yodel/models/security/logout_page.rb +13 -0
- data/lib/yodel/models/security/noone_group.rb +5 -0
- data/lib/yodel/models/security/owner_group.rb +8 -0
- data/lib/yodel/models/security/password.rb +5 -0
- data/lib/yodel/models/security/password_reset_page.rb +47 -0
- data/lib/yodel/models/security/security.rb +10 -0
- data/lib/yodel/models/security/user.rb +33 -0
- data/lib/yodel/public/core/css/core.css +257 -0
- data/lib/yodel/public/core/css/reset.css +48 -0
- data/lib/yodel/public/core/images/cross.png +0 -0
- data/lib/yodel/public/core/images/spinner.gif +0 -0
- data/lib/yodel/public/core/images/tick.png +0 -0
- data/lib/yodel/public/core/images/yodel.png +0 -0
- data/lib/yodel/public/core/js/jquery.min.js +18 -0
- data/lib/yodel/public/core/js/json2.js +480 -0
- data/lib/yodel/public/core/js/yodel_jquery.js +238 -0
- data/lib/yodel/request/authentication.rb +76 -0
- data/lib/yodel/request/flash.rb +28 -0
- data/lib/yodel/request/request.rb +4 -0
- data/lib/yodel/requires.rb +47 -0
- data/lib/yodel/task_queue/queue_daemon.rb +33 -0
- data/lib/yodel/task_queue/queue_worker.rb +32 -0
- data/lib/yodel/task_queue/stats_thread.rb +27 -0
- data/lib/yodel/task_queue/task.rb +62 -0
- data/lib/yodel/task_queue/task_queue.rb +40 -0
- data/lib/yodel/types/date.rb +5 -0
- data/lib/yodel/types/object_id.rb +11 -0
- data/lib/yodel/types/time.rb +5 -0
- data/lib/yodel/version.rb +3 -0
- data/system/Library/LaunchDaemons/com.yodelcms.dns.plist +26 -0
- data/system/Library/LaunchDaemons/com.yodelcms.server.plist +26 -0
- data/system/etc/resolver/yodel +2 -0
- data/system/usr/local/bin/yodel_command_runner +2 -0
- data/system/usr/local/etc/yodel/development_settings.rb +28 -0
- data/system/usr/local/etc/yodel/production_settings.rb +27 -0
- data/system/var/log/yodel.log +0 -0
- data/test/helper.rb +18 -0
- data/test/test_yodel.rb +4 -0
- data/yodel.gemspec +47 -0
- metadata +501 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
class StatsThread
|
2
|
+
PERIOD = 60
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@processed = 0
|
6
|
+
@running = true
|
7
|
+
Thread.new do
|
8
|
+
while @running
|
9
|
+
sleep(PERIOD)
|
10
|
+
puts "Processed #{@processed} tasks"
|
11
|
+
@processed = 0
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def stop
|
17
|
+
@running = false
|
18
|
+
end
|
19
|
+
|
20
|
+
def kill
|
21
|
+
@thread.kill
|
22
|
+
end
|
23
|
+
|
24
|
+
def processed_task
|
25
|
+
@processed += 1
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class Task < SiteRecord
|
2
|
+
FAILED_TASK_DELAY = 2 * 60 # 2 minutes
|
3
|
+
MAX_TASK_ATTEMPTS = 5
|
4
|
+
|
5
|
+
collection :queue
|
6
|
+
field :type, :string
|
7
|
+
field :params, :hash
|
8
|
+
field :due, :time
|
9
|
+
field :created_at, :time
|
10
|
+
field :locked, :time
|
11
|
+
field :repeat_in, :integer
|
12
|
+
field :attempts, :integer, default: 0
|
13
|
+
field :stack_trace, :string
|
14
|
+
|
15
|
+
def self.add_task(type, params, site, due=nil)
|
16
|
+
task = Task.new(site)
|
17
|
+
task.type = type.to_s
|
18
|
+
task.params = params
|
19
|
+
task.due = due
|
20
|
+
task.save
|
21
|
+
end
|
22
|
+
|
23
|
+
def execute
|
24
|
+
# TODO: plugins need a way of inserting themselves in to this switch
|
25
|
+
case self.type
|
26
|
+
when 'deliver_email'
|
27
|
+
email = site.emails.find(params['_id'])
|
28
|
+
email.perform_delivery(params)
|
29
|
+
when 'call_api'
|
30
|
+
api_call = site.api_calls.find(params['_id'])
|
31
|
+
api_call.perform_call(params)
|
32
|
+
when 'perform_destroy_stale_carts'
|
33
|
+
Cart.perform_destroy_stale_carts(site)
|
34
|
+
end
|
35
|
+
|
36
|
+
# if the task repeats, place it on the queue again by reseting the
|
37
|
+
# due time and removing the locked time making it available again
|
38
|
+
if repeat_in?
|
39
|
+
self.due = Time.at(Time.now.utc.to_i + repeat_in)
|
40
|
+
self.locked = nil
|
41
|
+
self.save
|
42
|
+
else
|
43
|
+
self.destroy
|
44
|
+
end
|
45
|
+
|
46
|
+
rescue
|
47
|
+
# increase the attempt count after any exceptions. after N attempts
|
48
|
+
# the task is halted and assumed to have failed. manual intervention
|
49
|
+
# is required to start it again. delay its execution on the queue for
|
50
|
+
# a certain amount of time to potentially allow resource issues to
|
51
|
+
# "fix themselves" (such as loss of network).
|
52
|
+
self.attempts += 1
|
53
|
+
|
54
|
+
if self.attempts < MAX_TASK_ATTEMPTS
|
55
|
+
self.due = Time.at(Time.now.utc.to_i + FAILED_TASK_DELAY)
|
56
|
+
self.locked = nil
|
57
|
+
end
|
58
|
+
|
59
|
+
self.stack_trace = "Error: #{$!}\n#{$@.join("\n")}"
|
60
|
+
self.save
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Dir.chdir(File.dirname(__FILE__)) do
|
2
|
+
require './queue_daemon'
|
3
|
+
require './queue_worker'
|
4
|
+
require './stats_thread'
|
5
|
+
require './task'
|
6
|
+
end
|
7
|
+
|
8
|
+
class TaskQueue
|
9
|
+
MAX_TASK_ATTEMPTS = 5
|
10
|
+
|
11
|
+
def initialize(immediate)
|
12
|
+
@immediate = immediate
|
13
|
+
end
|
14
|
+
|
15
|
+
def pop
|
16
|
+
options = {query: conditions, update: {'$set' => {locked: Time.now}}, sort: ['created_at', 1]}
|
17
|
+
document = Task.collection.find_and_modify(options)
|
18
|
+
return nil if document.nil?
|
19
|
+
site = Site.find(document['_site_id'])
|
20
|
+
|
21
|
+
# FIXME: write error to log here
|
22
|
+
if site.nil?
|
23
|
+
Task.collection.remove(_id: document['_id'])
|
24
|
+
return nil
|
25
|
+
end
|
26
|
+
|
27
|
+
Task.new(site, document)
|
28
|
+
rescue Mongo::OperationFailure
|
29
|
+
return nil
|
30
|
+
end
|
31
|
+
|
32
|
+
def conditions
|
33
|
+
if @immediate
|
34
|
+
query = {due: nil}
|
35
|
+
else
|
36
|
+
query = {due: {'$lte' => Time.now.utc}}
|
37
|
+
end
|
38
|
+
query.merge(locked: nil, attempts: {'$lt' => MAX_TASK_ATTEMPTS})
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>Label</key>
|
6
|
+
<string>com.yodelcms.dns</string>
|
7
|
+
<key>ProgramArguments</key>
|
8
|
+
<array>
|
9
|
+
<string>/usr/local/bin/yodel_command_runner</string>
|
10
|
+
<string>dns</string>
|
11
|
+
</array>
|
12
|
+
<key>KeepAlive</key>
|
13
|
+
<true/>
|
14
|
+
<key>RunAtLoad</key>
|
15
|
+
<true/>
|
16
|
+
<key>StandardOutPath</key>
|
17
|
+
<string>/var/log/yodel_dns.log</string>
|
18
|
+
<key>StandardErrorPath</key>
|
19
|
+
<string>/var/log/yodel_dns.log</string>
|
20
|
+
<key>EnvironmentVariables</key>
|
21
|
+
<dict>
|
22
|
+
<key>INLINEDIR</key>
|
23
|
+
<string><%= sites_root %></string>
|
24
|
+
</dict>
|
25
|
+
</dict>
|
26
|
+
</plist>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>Label</key>
|
6
|
+
<string>com.yodelcms.server</string>
|
7
|
+
<key>ProgramArguments</key>
|
8
|
+
<array>
|
9
|
+
<string>/usr/local/bin/yodel_command_runner</string>
|
10
|
+
<string>server</string>
|
11
|
+
</array>
|
12
|
+
<key>KeepAlive</key>
|
13
|
+
<true/>
|
14
|
+
<key>RunAtLoad</key>
|
15
|
+
<true/>
|
16
|
+
<key>StandardOutPath</key>
|
17
|
+
<string>/var/log/yodel.log</string>
|
18
|
+
<key>StandardErrorPath</key>
|
19
|
+
<string>/var/log/yodel.log</string>
|
20
|
+
<key>EnvironmentVariables</key>
|
21
|
+
<dict>
|
22
|
+
<key>INLINEDIR</key>
|
23
|
+
<string><%= sites_root %></string>
|
24
|
+
</dict>
|
25
|
+
</dict>
|
26
|
+
</plist>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Yodel.config.define do |config|
|
2
|
+
# mongo
|
3
|
+
config.database_hostname = '<%= database_hostname %>'
|
4
|
+
config.database_port = <%= database_port %>
|
5
|
+
config.database = '<%= database_name %>'
|
6
|
+
|
7
|
+
# yodel
|
8
|
+
config.session_key = 'yodel.session'
|
9
|
+
config.session_secret = 'yodel.session'
|
10
|
+
config.sites_root = '<%= sites_root %>'
|
11
|
+
config.owner_user = <%= user %>
|
12
|
+
config.owner_group = <%= group %>
|
13
|
+
|
14
|
+
# environment
|
15
|
+
config.web_port = <%= web_port %>
|
16
|
+
config.dns_port = <%= dns_port %>
|
17
|
+
config.git_path = `which git`.strip
|
18
|
+
|
19
|
+
# logging
|
20
|
+
config.logger = Logger.new('/var/log/yodel.log')
|
21
|
+
config.sev_threshold = Logger::INFO
|
22
|
+
end
|
23
|
+
|
24
|
+
Yodel.env.development!
|
25
|
+
|
26
|
+
Mail.defaults do
|
27
|
+
delivery_method :sendmail
|
28
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Yodel.config.define do |config|
|
2
|
+
# mongo
|
3
|
+
config.database_hostname = '<%= database_hostname %>'
|
4
|
+
config.database_port = <%= database_port %>
|
5
|
+
config.database = '<%= database_name %>'
|
6
|
+
|
7
|
+
# yodel
|
8
|
+
config.session_key = 'yodel.session'
|
9
|
+
config.session_secret = 'yodel.session'
|
10
|
+
config.sites_root = '<%= sites_root %>'
|
11
|
+
|
12
|
+
# environment
|
13
|
+
config.dns_port = <%= dns_port %>
|
14
|
+
config.git_path = `which git`.strip
|
15
|
+
config.public_directory = '<%= public_directory %>'
|
16
|
+
config.deploy_command = 'yodel'
|
17
|
+
|
18
|
+
# logging
|
19
|
+
config.logger = Logger.new('/var/log/yodel.log')
|
20
|
+
config.sev_threshold = Logger::INFO
|
21
|
+
end
|
22
|
+
|
23
|
+
Yodel.env.production!
|
24
|
+
|
25
|
+
Mail.defaults do
|
26
|
+
delivery_method :sendmail
|
27
|
+
end
|
File without changes
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'yodel'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
data/test/test_yodel.rb
ADDED
data/yodel.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'yodel/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'yodel'
|
7
|
+
s.version = Yodel::VERSION
|
8
|
+
s.authors = ['Will Cannings']
|
9
|
+
s.email = ['me@willcannings.com']
|
10
|
+
s.homepage = 'http://yodelcms.com'
|
11
|
+
s.summary = 'Yodel CMS'
|
12
|
+
s.description = 'Yodel CMS'
|
13
|
+
s.licenses = ["Public Domain"]
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'bundler', '~> 1.0.21'
|
21
|
+
s.add_runtime_dependency 'rack', '~> 1.3.3'
|
22
|
+
s.add_runtime_dependency 'mongo', '~> 1.3.1'
|
23
|
+
s.add_runtime_dependency 'bson', '~> 1.3.1'
|
24
|
+
s.add_runtime_dependency 'bson_ext', '~> 1.3.1'
|
25
|
+
s.add_runtime_dependency 'plucky', '~> 0.4.1'
|
26
|
+
s.add_runtime_dependency 'activesupport', '~> 3.0.3'
|
27
|
+
s.add_runtime_dependency 'ember', '~> 0.3.1'
|
28
|
+
s.add_runtime_dependency 'mail', '~> 2.3.0'
|
29
|
+
s.add_runtime_dependency 'hpricot', '~> 0.8.4'
|
30
|
+
s.add_runtime_dependency 'json', '~> 1.6.1'
|
31
|
+
s.add_runtime_dependency 'rack-contrib', '~> 1.1.0'
|
32
|
+
s.add_runtime_dependency 'rubydns', '~> 0.3.3'
|
33
|
+
s.add_runtime_dependency 'git', '~> 1.2.5'
|
34
|
+
s.add_runtime_dependency 'highline', '~> 1.6.2'
|
35
|
+
s.add_runtime_dependency 'mini_magick', '~> 3.3'
|
36
|
+
s.add_runtime_dependency 'linguistics', '~> 1.0.9'
|
37
|
+
|
38
|
+
# extensions
|
39
|
+
s.add_runtime_dependency 'yodel_admin'
|
40
|
+
s.add_runtime_dependency 'yodel_queue'
|
41
|
+
s.add_runtime_dependency 'yodel_blog'
|
42
|
+
s.add_runtime_dependency 'yodel_shop'
|
43
|
+
|
44
|
+
# environment support sites
|
45
|
+
s.add_runtime_dependency 'yodel_development_environment'
|
46
|
+
s.add_runtime_dependency 'yodel_production_environment'
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,501 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yodel
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Will Cannings
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-09 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: &70308430598920 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.21
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70308430598920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack
|
27
|
+
requirement: &70308430597580 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.3.3
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70308430597580
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mongo
|
38
|
+
requirement: &70308430596000 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.3.1
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70308430596000
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bson
|
49
|
+
requirement: &70308430594940 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.1
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70308430594940
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: bson_ext
|
60
|
+
requirement: &70308430593740 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.3.1
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70308430593740
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: plucky
|
71
|
+
requirement: &70308430569480 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.4.1
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70308430569480
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: activesupport
|
82
|
+
requirement: &70308430568120 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 3.0.3
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70308430568120
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: ember
|
93
|
+
requirement: &70308430566900 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.3.1
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70308430566900
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: mail
|
104
|
+
requirement: &70308430566300 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.3.0
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70308430566300
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: hpricot
|
115
|
+
requirement: &70308430565480 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ~>
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 0.8.4
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *70308430565480
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: json
|
126
|
+
requirement: &70308430564580 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.6.1
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70308430564580
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: rack-contrib
|
137
|
+
requirement: &70308430559860 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.1.0
|
143
|
+
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *70308430559860
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: rubydns
|
148
|
+
requirement: &70308430559240 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ~>
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 0.3.3
|
154
|
+
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *70308430559240
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: git
|
159
|
+
requirement: &70308430558500 !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
161
|
+
requirements:
|
162
|
+
- - ~>
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 1.2.5
|
165
|
+
type: :runtime
|
166
|
+
prerelease: false
|
167
|
+
version_requirements: *70308430558500
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: highline
|
170
|
+
requirement: &70308430557500 !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ~>
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 1.6.2
|
176
|
+
type: :runtime
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: *70308430557500
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: mini_magick
|
181
|
+
requirement: &70308430556260 !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ~>
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '3.3'
|
187
|
+
type: :runtime
|
188
|
+
prerelease: false
|
189
|
+
version_requirements: *70308430556260
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: linguistics
|
192
|
+
requirement: &70308430554780 !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ~>
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: 1.0.9
|
198
|
+
type: :runtime
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: *70308430554780
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: yodel_admin
|
203
|
+
requirement: &70308430554200 !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
type: :runtime
|
210
|
+
prerelease: false
|
211
|
+
version_requirements: *70308430554200
|
212
|
+
- !ruby/object:Gem::Dependency
|
213
|
+
name: yodel_queue
|
214
|
+
requirement: &70308430553420 !ruby/object:Gem::Requirement
|
215
|
+
none: false
|
216
|
+
requirements:
|
217
|
+
- - ! '>='
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0'
|
220
|
+
type: :runtime
|
221
|
+
prerelease: false
|
222
|
+
version_requirements: *70308430553420
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: yodel_blog
|
225
|
+
requirement: &70308430552980 !ruby/object:Gem::Requirement
|
226
|
+
none: false
|
227
|
+
requirements:
|
228
|
+
- - ! '>='
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :runtime
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: *70308430552980
|
234
|
+
- !ruby/object:Gem::Dependency
|
235
|
+
name: yodel_shop
|
236
|
+
requirement: &70308430552400 !ruby/object:Gem::Requirement
|
237
|
+
none: false
|
238
|
+
requirements:
|
239
|
+
- - ! '>='
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
242
|
+
type: :runtime
|
243
|
+
prerelease: false
|
244
|
+
version_requirements: *70308430552400
|
245
|
+
- !ruby/object:Gem::Dependency
|
246
|
+
name: yodel_development_environment
|
247
|
+
requirement: &70308430551520 !ruby/object:Gem::Requirement
|
248
|
+
none: false
|
249
|
+
requirements:
|
250
|
+
- - ! '>='
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '0'
|
253
|
+
type: :runtime
|
254
|
+
prerelease: false
|
255
|
+
version_requirements: *70308430551520
|
256
|
+
- !ruby/object:Gem::Dependency
|
257
|
+
name: yodel_production_environment
|
258
|
+
requirement: &70308430550760 !ruby/object:Gem::Requirement
|
259
|
+
none: false
|
260
|
+
requirements:
|
261
|
+
- - ! '>='
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
264
|
+
type: :runtime
|
265
|
+
prerelease: false
|
266
|
+
version_requirements: *70308430550760
|
267
|
+
description: Yodel CMS
|
268
|
+
email:
|
269
|
+
- me@willcannings.com
|
270
|
+
executables:
|
271
|
+
- yodel
|
272
|
+
extensions: []
|
273
|
+
extra_rdoc_files: []
|
274
|
+
files:
|
275
|
+
- .document
|
276
|
+
- .gitignore
|
277
|
+
- Gemfile
|
278
|
+
- Gemfile.lock
|
279
|
+
- LICENSE
|
280
|
+
- README.rdoc
|
281
|
+
- Rakefile
|
282
|
+
- bin/yodel
|
283
|
+
- lib/yodel.rb
|
284
|
+
- lib/yodel/application/application.rb
|
285
|
+
- lib/yodel/application/extension.rb
|
286
|
+
- lib/yodel/application/request_handler.rb
|
287
|
+
- lib/yodel/application/yodel.rb
|
288
|
+
- lib/yodel/command/command.rb
|
289
|
+
- lib/yodel/command/deploy.rb
|
290
|
+
- lib/yodel/command/dns_server.rb
|
291
|
+
- lib/yodel/command/installer.rb
|
292
|
+
- lib/yodel/config/config.rb
|
293
|
+
- lib/yodel/config/environment.rb
|
294
|
+
- lib/yodel/config/yodel.rb
|
295
|
+
- lib/yodel/exceptions/destroyed_record.rb
|
296
|
+
- lib/yodel/exceptions/domain_not_found.rb
|
297
|
+
- lib/yodel/exceptions/duplicate_layout.rb
|
298
|
+
- lib/yodel/exceptions/exceptions.rb
|
299
|
+
- lib/yodel/exceptions/inconsistent_lock_state.rb
|
300
|
+
- lib/yodel/exceptions/invalid_field.rb
|
301
|
+
- lib/yodel/exceptions/invalid_index.rb
|
302
|
+
- lib/yodel/exceptions/invalid_mixin.rb
|
303
|
+
- lib/yodel/exceptions/invalid_model_field.rb
|
304
|
+
- lib/yodel/exceptions/layout_not_found.rb
|
305
|
+
- lib/yodel/exceptions/mass_assignment.rb
|
306
|
+
- lib/yodel/exceptions/missing_migration.rb
|
307
|
+
- lib/yodel/exceptions/missing_root_directory.rb
|
308
|
+
- lib/yodel/exceptions/unable_to_acquire_lock.rb
|
309
|
+
- lib/yodel/exceptions/unauthorised.rb
|
310
|
+
- lib/yodel/exceptions/unknown_field.rb
|
311
|
+
- lib/yodel/middleware/development_server.rb
|
312
|
+
- lib/yodel/middleware/error_pages.rb
|
313
|
+
- lib/yodel/middleware/public_assets.rb
|
314
|
+
- lib/yodel/middleware/request.rb
|
315
|
+
- lib/yodel/middleware/site_detector.rb
|
316
|
+
- lib/yodel/mime_types/default_mime_set.rb
|
317
|
+
- lib/yodel/mime_types/mime_type.rb
|
318
|
+
- lib/yodel/mime_types/mime_type_set.rb
|
319
|
+
- lib/yodel/mime_types/mime_types.rb
|
320
|
+
- lib/yodel/mime_types/yodel.rb
|
321
|
+
- lib/yodel/models/api/api.rb
|
322
|
+
- lib/yodel/models/api/api_call.rb
|
323
|
+
- lib/yodel/models/core/associations/association.rb
|
324
|
+
- lib/yodel/models/core/associations/associations.rb
|
325
|
+
- lib/yodel/models/core/associations/counts/many_association.rb
|
326
|
+
- lib/yodel/models/core/associations/counts/one_association.rb
|
327
|
+
- lib/yodel/models/core/associations/embedded/embedded_association.rb
|
328
|
+
- lib/yodel/models/core/associations/embedded/embedded_record_array.rb
|
329
|
+
- lib/yodel/models/core/associations/embedded/many_embedded_association.rb
|
330
|
+
- lib/yodel/models/core/associations/embedded/one_embedded_association.rb
|
331
|
+
- lib/yodel/models/core/associations/query/many_query_association.rb
|
332
|
+
- lib/yodel/models/core/associations/query/one_query_association.rb
|
333
|
+
- lib/yodel/models/core/associations/query/query_association.rb
|
334
|
+
- lib/yodel/models/core/associations/record_association.rb
|
335
|
+
- lib/yodel/models/core/associations/store/many_store_association.rb
|
336
|
+
- lib/yodel/models/core/associations/store/one_store_association.rb
|
337
|
+
- lib/yodel/models/core/associations/store/store_association.rb
|
338
|
+
- lib/yodel/models/core/attachments/attachment.rb
|
339
|
+
- lib/yodel/models/core/attachments/image.rb
|
340
|
+
- lib/yodel/models/core/core.rb
|
341
|
+
- lib/yodel/models/core/fields/alias_field.rb
|
342
|
+
- lib/yodel/models/core/fields/array_field.rb
|
343
|
+
- lib/yodel/models/core/fields/attachment_field.rb
|
344
|
+
- lib/yodel/models/core/fields/boolean_field.rb
|
345
|
+
- lib/yodel/models/core/fields/change_sensitive_array.rb
|
346
|
+
- lib/yodel/models/core/fields/change_sensitive_hash.rb
|
347
|
+
- lib/yodel/models/core/fields/color_field.rb
|
348
|
+
- lib/yodel/models/core/fields/date_field.rb
|
349
|
+
- lib/yodel/models/core/fields/decimal_field.rb
|
350
|
+
- lib/yodel/models/core/fields/email_field.rb
|
351
|
+
- lib/yodel/models/core/fields/enum_field.rb
|
352
|
+
- lib/yodel/models/core/fields/field.rb
|
353
|
+
- lib/yodel/models/core/fields/fields.rb
|
354
|
+
- lib/yodel/models/core/fields/fields_field.rb
|
355
|
+
- lib/yodel/models/core/fields/filter_mixin.rb
|
356
|
+
- lib/yodel/models/core/fields/filtered_string_field.rb
|
357
|
+
- lib/yodel/models/core/fields/filtered_text_field.rb
|
358
|
+
- lib/yodel/models/core/fields/function_field.rb
|
359
|
+
- lib/yodel/models/core/fields/hash_field.rb
|
360
|
+
- lib/yodel/models/core/fields/html_field.rb
|
361
|
+
- lib/yodel/models/core/fields/image_field.rb
|
362
|
+
- lib/yodel/models/core/fields/integer_field.rb
|
363
|
+
- lib/yodel/models/core/fields/password_field.rb
|
364
|
+
- lib/yodel/models/core/fields/self_field.rb
|
365
|
+
- lib/yodel/models/core/fields/string_field.rb
|
366
|
+
- lib/yodel/models/core/fields/tags_field.rb
|
367
|
+
- lib/yodel/models/core/fields/text_field.rb
|
368
|
+
- lib/yodel/models/core/fields/time_field.rb
|
369
|
+
- lib/yodel/models/core/functions/function.rb
|
370
|
+
- lib/yodel/models/core/functions/functions.rb
|
371
|
+
- lib/yodel/models/core/functions/trigger.rb
|
372
|
+
- lib/yodel/models/core/log/log.rb
|
373
|
+
- lib/yodel/models/core/log/log_entry.rb
|
374
|
+
- lib/yodel/models/core/model/abstract_model.rb
|
375
|
+
- lib/yodel/models/core/model/model.rb
|
376
|
+
- lib/yodel/models/core/model/mongo_model.rb
|
377
|
+
- lib/yodel/models/core/model/site_model.rb
|
378
|
+
- lib/yodel/models/core/mongo/mongo.rb
|
379
|
+
- lib/yodel/models/core/mongo/primary_key_factory.rb
|
380
|
+
- lib/yodel/models/core/mongo/query.rb
|
381
|
+
- lib/yodel/models/core/mongo/record_index.rb
|
382
|
+
- lib/yodel/models/core/record/abstract_record.rb
|
383
|
+
- lib/yodel/models/core/record/embedded_record.rb
|
384
|
+
- lib/yodel/models/core/record/mongo_record.rb
|
385
|
+
- lib/yodel/models/core/record/record.rb
|
386
|
+
- lib/yodel/models/core/record/section.rb
|
387
|
+
- lib/yodel/models/core/record/site_record.rb
|
388
|
+
- lib/yodel/models/core/site/migration.rb
|
389
|
+
- lib/yodel/models/core/site/remote.rb
|
390
|
+
- lib/yodel/models/core/site/site.rb
|
391
|
+
- lib/yodel/models/core/validations/email_address_validation.rb
|
392
|
+
- lib/yodel/models/core/validations/embedded_records_validation.rb
|
393
|
+
- lib/yodel/models/core/validations/errors.rb
|
394
|
+
- lib/yodel/models/core/validations/excluded_from_validation.rb
|
395
|
+
- lib/yodel/models/core/validations/excludes_combinations_validation.rb
|
396
|
+
- lib/yodel/models/core/validations/format_validation.rb
|
397
|
+
- lib/yodel/models/core/validations/included_in_validation.rb
|
398
|
+
- lib/yodel/models/core/validations/includes_combinations_validation.rb
|
399
|
+
- lib/yodel/models/core/validations/length_validation.rb
|
400
|
+
- lib/yodel/models/core/validations/password_confirmation_validation.rb
|
401
|
+
- lib/yodel/models/core/validations/required_validation.rb
|
402
|
+
- lib/yodel/models/core/validations/unique_validation.rb
|
403
|
+
- lib/yodel/models/core/validations/validation.rb
|
404
|
+
- lib/yodel/models/core/validations/validations.rb
|
405
|
+
- lib/yodel/models/email/email.rb
|
406
|
+
- lib/yodel/models/migrations/01_record_model.rb
|
407
|
+
- lib/yodel/models/migrations/02_page_model.rb
|
408
|
+
- lib/yodel/models/migrations/03_layout_model.rb
|
409
|
+
- lib/yodel/models/migrations/04_group_model.rb
|
410
|
+
- lib/yodel/models/migrations/05_user_model.rb
|
411
|
+
- lib/yodel/models/migrations/06_snippet_model.rb
|
412
|
+
- lib/yodel/models/migrations/07_search_page_model.rb
|
413
|
+
- lib/yodel/models/migrations/08_default_site_options.rb
|
414
|
+
- lib/yodel/models/migrations/09_security_page_models.rb
|
415
|
+
- lib/yodel/models/migrations/10_record_proxy_page_model.rb
|
416
|
+
- lib/yodel/models/migrations/11_email_model.rb
|
417
|
+
- lib/yodel/models/migrations/12_api_call_model.rb
|
418
|
+
- lib/yodel/models/migrations/13_redirect_page_model.rb
|
419
|
+
- lib/yodel/models/migrations/14_menu_model.rb
|
420
|
+
- lib/yodel/models/models.rb
|
421
|
+
- lib/yodel/models/pages/form_builder.rb
|
422
|
+
- lib/yodel/models/pages/html_decorator.rb
|
423
|
+
- lib/yodel/models/pages/layout.rb
|
424
|
+
- lib/yodel/models/pages/menu.rb
|
425
|
+
- lib/yodel/models/pages/page.rb
|
426
|
+
- lib/yodel/models/pages/pages.rb
|
427
|
+
- lib/yodel/models/pages/record_proxy_page.rb
|
428
|
+
- lib/yodel/models/pages/redirect_page.rb
|
429
|
+
- lib/yodel/models/search/search.rb
|
430
|
+
- lib/yodel/models/search/search_page.rb
|
431
|
+
- lib/yodel/models/security/facebook_login_page.rb
|
432
|
+
- lib/yodel/models/security/group.rb
|
433
|
+
- lib/yodel/models/security/guests_group.rb
|
434
|
+
- lib/yodel/models/security/login_page.rb
|
435
|
+
- lib/yodel/models/security/logout_page.rb
|
436
|
+
- lib/yodel/models/security/noone_group.rb
|
437
|
+
- lib/yodel/models/security/owner_group.rb
|
438
|
+
- lib/yodel/models/security/password.rb
|
439
|
+
- lib/yodel/models/security/password_reset_page.rb
|
440
|
+
- lib/yodel/models/security/security.rb
|
441
|
+
- lib/yodel/models/security/user.rb
|
442
|
+
- lib/yodel/public/core/css/core.css
|
443
|
+
- lib/yodel/public/core/css/reset.css
|
444
|
+
- lib/yodel/public/core/images/cross.png
|
445
|
+
- lib/yodel/public/core/images/spinner.gif
|
446
|
+
- lib/yodel/public/core/images/tick.png
|
447
|
+
- lib/yodel/public/core/images/yodel.png
|
448
|
+
- lib/yodel/public/core/js/jquery.min.js
|
449
|
+
- lib/yodel/public/core/js/json2.js
|
450
|
+
- lib/yodel/public/core/js/yodel_jquery.js
|
451
|
+
- lib/yodel/request/authentication.rb
|
452
|
+
- lib/yodel/request/flash.rb
|
453
|
+
- lib/yodel/request/request.rb
|
454
|
+
- lib/yodel/requires.rb
|
455
|
+
- lib/yodel/task_queue/queue_daemon.rb
|
456
|
+
- lib/yodel/task_queue/queue_worker.rb
|
457
|
+
- lib/yodel/task_queue/stats_thread.rb
|
458
|
+
- lib/yodel/task_queue/task.rb
|
459
|
+
- lib/yodel/task_queue/task_queue.rb
|
460
|
+
- lib/yodel/types/date.rb
|
461
|
+
- lib/yodel/types/object_id.rb
|
462
|
+
- lib/yodel/types/time.rb
|
463
|
+
- lib/yodel/version.rb
|
464
|
+
- system/Library/LaunchDaemons/com.yodelcms.dns.plist
|
465
|
+
- system/Library/LaunchDaemons/com.yodelcms.server.plist
|
466
|
+
- system/etc/resolver/yodel
|
467
|
+
- system/usr/local/bin/yodel_command_runner
|
468
|
+
- system/usr/local/etc/yodel/development_settings.rb
|
469
|
+
- system/usr/local/etc/yodel/production_settings.rb
|
470
|
+
- system/var/log/yodel.log
|
471
|
+
- test/helper.rb
|
472
|
+
- test/test_yodel.rb
|
473
|
+
- yodel.gemspec
|
474
|
+
homepage: http://yodelcms.com
|
475
|
+
licenses:
|
476
|
+
- Public Domain
|
477
|
+
post_install_message:
|
478
|
+
rdoc_options: []
|
479
|
+
require_paths:
|
480
|
+
- lib
|
481
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
482
|
+
none: false
|
483
|
+
requirements:
|
484
|
+
- - ! '>='
|
485
|
+
- !ruby/object:Gem::Version
|
486
|
+
version: '0'
|
487
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
488
|
+
none: false
|
489
|
+
requirements:
|
490
|
+
- - ! '>='
|
491
|
+
- !ruby/object:Gem::Version
|
492
|
+
version: '0'
|
493
|
+
requirements: []
|
494
|
+
rubyforge_project:
|
495
|
+
rubygems_version: 1.8.10
|
496
|
+
signing_key:
|
497
|
+
specification_version: 3
|
498
|
+
summary: Yodel CMS
|
499
|
+
test_files:
|
500
|
+
- test/helper.rb
|
501
|
+
- test/test_yodel.rb
|