yodel 0.0.3 → 0.0.4
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/lib/yodel/command/command.rb +20 -4
- data/lib/yodel/command/feedback.rb +8 -0
- data/lib/yodel/command/installer.rb +19 -23
- data/lib/yodel/command/restart.rb +21 -0
- data/lib/yodel/middleware/public_assets.rb +15 -2
- data/lib/yodel/models/core/attachments/image.rb +26 -6
- data/lib/yodel/models/core/site/migration.rb +38 -0
- data/lib/yodel/models/core/site/site.rb +1 -7
- data/lib/yodel/version.rb +1 -1
- data/system/usr/local/etc/yodel/development_settings.rb +4 -1
- data/system/usr/local/etc/yodel/production_settings.rb +4 -1
- data/yodel.gemspec +0 -1
- metadata +48 -57
@@ -5,7 +5,7 @@ Encoding.default_external = "utf-8"
|
|
5
5
|
class CommandRunner
|
6
6
|
def self.run
|
7
7
|
OptionParser.new do |opts|
|
8
|
-
opts.banner = "Usage: yodel [options] server|dns|console|migrate|setup|
|
8
|
+
opts.banner = "Usage: yodel [options] server|dns|restart|console|migrate|deploy|setup|update"
|
9
9
|
opts.on('-p', '--port PORT', Integer, 'Override the default web server port') do |port|
|
10
10
|
$web_port = port
|
11
11
|
end
|
@@ -73,9 +73,7 @@ class CommandRunner
|
|
73
73
|
require '../../yodel'
|
74
74
|
Yodel.config.extensions_folder = $extensions_folder if $extensions_folder
|
75
75
|
$application = Application.new
|
76
|
-
|
77
|
-
Migration.run_migrations(site)
|
78
|
-
end
|
76
|
+
Migration.run_migrations_for_all_sites
|
79
77
|
|
80
78
|
when 'deploy'
|
81
79
|
require '../../yodel'
|
@@ -86,6 +84,24 @@ class CommandRunner
|
|
86
84
|
when 'setup'
|
87
85
|
require './installer'
|
88
86
|
Installer.new.install_system_files
|
87
|
+
|
88
|
+
when 'restart'
|
89
|
+
require './restart'
|
90
|
+
if Restart.can_restart?
|
91
|
+
Restart.restart!
|
92
|
+
else
|
93
|
+
puts "Restart can only be run on OS X machines"
|
94
|
+
end
|
95
|
+
|
96
|
+
when 'update'
|
97
|
+
require '../../yodel'
|
98
|
+
require './restart'
|
99
|
+
Yodel.config.extensions_folder = $extensions_folder if $extensions_folder
|
100
|
+
$application = Application.new
|
101
|
+
|
102
|
+
Migration.copy_missing_migrations_for_all_sites
|
103
|
+
Migration.run_migrations_for_all_sites
|
104
|
+
Restart.restart! if Restart.can_restart?
|
89
105
|
|
90
106
|
else
|
91
107
|
puts "Unknown command: #{command}"
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require './feedback'
|
2
|
+
require './restart'
|
2
3
|
require 'tempfile'
|
3
4
|
require 'ember'
|
4
5
|
require 'etc'
|
@@ -9,7 +10,8 @@ class Installer
|
|
9
10
|
# ----------------------------------------
|
10
11
|
attr_reader :database_hostname, :database_port, :database_name,
|
11
12
|
:sites_root, :ruby_path, :web_port, :dns_port,
|
12
|
-
:user, :group, :public_directory
|
13
|
+
:user, :group, :public_directory, :git_path,
|
14
|
+
:identify_path, :convert_path
|
13
15
|
|
14
16
|
def default_sites_root
|
15
17
|
if `uname -a` =~ /Darwin/
|
@@ -34,9 +36,6 @@ class Installer
|
|
34
36
|
@group = pwnam.gid
|
35
37
|
end
|
36
38
|
|
37
|
-
def default_group
|
38
|
-
end
|
39
|
-
|
40
39
|
def initialize
|
41
40
|
# assign default values; not all values have associated questions
|
42
41
|
# presented to the user depen
|
@@ -48,6 +47,9 @@ class Installer
|
|
48
47
|
@public_directory = '/var/www'
|
49
48
|
@sites_root = default_sites_root
|
50
49
|
@ruby_path = default_ruby_path
|
50
|
+
@git_path = `which git`.strip
|
51
|
+
@identify_path = `which identify`.strip
|
52
|
+
@convert_path = `which convert`.strip
|
51
53
|
assign_default_user_and_group
|
52
54
|
end
|
53
55
|
|
@@ -59,10 +61,6 @@ class Installer
|
|
59
61
|
@system_path ||= File.join(File.dirname(__FILE__), '..', '..', '..', 'system')
|
60
62
|
end
|
61
63
|
|
62
|
-
def report(verb, noun)
|
63
|
-
@h.say "<%= color('#{verb}', GREEN) %>\t#{noun}"
|
64
|
-
end
|
65
|
-
|
66
64
|
def escape_quotes(str)
|
67
65
|
str.gsub("'", "\\\\'")
|
68
66
|
end
|
@@ -75,7 +73,7 @@ class Installer
|
|
75
73
|
end
|
76
74
|
source_path = File.join(system_path, file)
|
77
75
|
temp_file = Tempfile.new('yodel')
|
78
|
-
report('installing', dest_path)
|
76
|
+
Feedback.report('installing', dest_path)
|
79
77
|
|
80
78
|
# render the file template
|
81
79
|
temp_file.write Ember::Template.new(IO.read(source_path), {source_file: source_path}).render(binding)
|
@@ -149,6 +147,14 @@ class Installer
|
|
149
147
|
h.say "your local user password.\n\n"
|
150
148
|
h.say "-----------------------------------------------------------------------------\n\n"
|
151
149
|
|
150
|
+
# default program paths
|
151
|
+
Feedback.report('locating', "git: #{@git_path}")
|
152
|
+
Feedback.report('warning', "git not found, path must be set manually in /usr/local/etc/yodel/settings.rb") if @git_path.empty?
|
153
|
+
Feedback.report('locating', "identify: #{@identify_path}")
|
154
|
+
Feedback.report('warning', "identify not found, path must be set manually in /usr/local/etc/yodel/settings.rb") if @identify_path.empty?
|
155
|
+
Feedback.report('locating', "convert: #{@convert_path}")
|
156
|
+
Feedback.report('warning', "convert not found, path must be set manually in /usr/local/etc/yodel/settings.rb") if @convert_path.empty?
|
157
|
+
|
152
158
|
# install system files
|
153
159
|
if `uname -a` =~ /Darwin/
|
154
160
|
install_mac_files
|
@@ -157,13 +163,13 @@ class Installer
|
|
157
163
|
end
|
158
164
|
|
159
165
|
# start yodel for environment installation
|
160
|
-
report('starting', 'yodel')
|
166
|
+
Feedback.report('starting', 'yodel')
|
161
167
|
require '../../yodel'
|
162
168
|
Yodel.config.extensions_folder = $extensions_folder if $extensions_folder
|
163
169
|
Yodel.load_extensions
|
164
170
|
|
165
171
|
# install an environment support site
|
166
|
-
report('installing', "#{@environment} environment support site")
|
172
|
+
Feedback.report('installing', "#{@environment} environment support site")
|
167
173
|
site = Site.new
|
168
174
|
site.name = "yodel"
|
169
175
|
site.domains = ['yodel', 'localhost', '127.0.0.1']
|
@@ -198,17 +204,7 @@ class Installer
|
|
198
204
|
install 'usr/local/etc/yodel/production_settings.rb', '0644', 'settings.rb'
|
199
205
|
end
|
200
206
|
|
201
|
-
|
202
|
-
if `sudo launchctl list` =~ /\d+.+com.yodelcms.dns$/
|
203
|
-
`sudo launchctl unload /Library/LaunchDaemons/com.yodelcms.dns.plist`
|
204
|
-
end
|
205
|
-
`sudo launchctl load /Library/LaunchDaemons/com.yodelcms.dns.plist`
|
206
|
-
|
207
|
-
report('starting', 'web server')
|
208
|
-
if `sudo launchctl list` =~ /\d+.+com.yodelcms.server$/
|
209
|
-
`sudo launchctl unload /Library/LaunchDaemons/com.yodelcms.server.plist`
|
210
|
-
end
|
211
|
-
`sudo launchctl load /Library/LaunchDaemons/com.yodelcms.server.plist`
|
207
|
+
Restart.restart!
|
212
208
|
end
|
213
209
|
|
214
210
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require './feedback'
|
2
|
+
|
3
|
+
class Restart
|
4
|
+
def self.can_restart?
|
5
|
+
`uname -a` =~ /Darwin/
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.restart!
|
9
|
+
Feedback.report('starting', 'dns server')
|
10
|
+
if `sudo launchctl list` =~ /\d+.+com.yodelcms.dns$/
|
11
|
+
`sudo launchctl unload /Library/LaunchDaemons/com.yodelcms.dns.plist`
|
12
|
+
end
|
13
|
+
`sudo launchctl load /Library/LaunchDaemons/com.yodelcms.dns.plist`
|
14
|
+
|
15
|
+
Feedback.report('starting', 'web server')
|
16
|
+
if `sudo launchctl list` =~ /\d+.+com.yodelcms.server$/
|
17
|
+
`sudo launchctl unload /Library/LaunchDaemons/com.yodelcms.server.plist`
|
18
|
+
end
|
19
|
+
`sudo launchctl load /Library/LaunchDaemons/com.yodelcms.server.plist`
|
20
|
+
end
|
21
|
+
end
|
@@ -15,17 +15,30 @@ class PublicAssets
|
|
15
15
|
request = Rack::Request.new(env)
|
16
16
|
site = env['yodel.site']
|
17
17
|
|
18
|
+
# when a site is missing, use the default set of public directories
|
18
19
|
unless site.nil?
|
19
20
|
public_directories = site.public_directories
|
20
21
|
else
|
21
22
|
public_directories = Yodel.config.public_directories
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
# attachments are handled separately to normal public resources; to handle
|
26
|
+
# /attachments/* the same way as other public folders, the site root would
|
27
|
+
# need to be used as a public folder. Adding attachments as a public folder
|
28
|
+
# and removing /attachments/ from the url, or making the path of all
|
29
|
+
# attachments in development have no /attachments/ prefix could cause issues.
|
30
|
+
if !site.nil? && parts[1] == 'attachments'
|
31
|
+
path = File.join(site.attachments_directory, *parts[2..-1])
|
26
32
|
if File.file?(path) && File.readable?(path)
|
27
33
|
return dup.serve_file(path, env)
|
28
34
|
end
|
35
|
+
else
|
36
|
+
public_directories.each do |public_dir|
|
37
|
+
path = File.join(public_dir, *parts)
|
38
|
+
if File.file?(path) && File.readable?(path)
|
39
|
+
return dup.serve_file(path, env)
|
40
|
+
end
|
41
|
+
end
|
29
42
|
end
|
30
43
|
|
31
44
|
# raise any delayed exceptions. These are delayed till this middleware so
|
@@ -6,12 +6,32 @@ class Image < Attachment
|
|
6
6
|
|
7
7
|
def crop_image
|
8
8
|
sizes = (@field.options['sizes'] || {}).to_hash.merge('admin_thumb' => '100x100')
|
9
|
-
return unless exist?
|
9
|
+
return unless exist?
|
10
|
+
|
11
|
+
# determine image dimensions
|
12
|
+
dimensions = `#{Yodel.config.identify_path} -ping -format "%w %h" #{path}`
|
13
|
+
unless ('0'..'9').include?(dimensions[0])
|
14
|
+
raise "Invalid image format or unknown Image Magick error: #{dimensions}"
|
15
|
+
else
|
16
|
+
iw, ih = dimensions.split.map(&:to_i)
|
17
|
+
end
|
18
|
+
|
19
|
+
# resize to each custom size, using the given dimensions as a maximum and
|
20
|
+
# minimum size - the resulting image is cropped if necessary
|
10
21
|
sizes.each do |size_name, size|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
22
|
+
sw, sh = size.split('x').map(&:to_i)
|
23
|
+
aspect = sw.to_f / sh.to_f
|
24
|
+
w, h = (ih * aspect), (iw / aspect)
|
25
|
+
w = [iw, w].min.to_i
|
26
|
+
h = [ih, h].min.to_i
|
27
|
+
|
28
|
+
command = "#{Yodel.config.convert_path} #{path} "
|
29
|
+
command += "-crop '#{w}x#{h}+#{(iw-w)/2}+#{(ih-h)/2}' "
|
30
|
+
command += "-resize '#{sw}x#{sh}' "
|
31
|
+
command += "-quality #{Yodel.config.image_quality} "
|
32
|
+
command += resized_image_path(size_name, false).to_s
|
33
|
+
result = `#{command}`
|
34
|
+
raise "Error converting image: #{result}" unless result.empty?
|
15
35
|
end
|
16
36
|
end
|
17
37
|
|
@@ -32,7 +52,7 @@ class Image < Attachment
|
|
32
52
|
if size == :original
|
33
53
|
super()
|
34
54
|
else
|
35
|
-
Pathname.new('/').join(relative_resized_image_path(size, crop_if_required))
|
55
|
+
Pathname.new('/').join(Yodel::ATTACHMENTS_DIRECTORY_NAME, relative_resized_image_path(size, crop_if_required))
|
36
56
|
end
|
37
57
|
end
|
38
58
|
end
|
@@ -1,4 +1,29 @@
|
|
1
1
|
class Migration
|
2
|
+
def self.copy_missing_migrations_for_all_sites
|
3
|
+
Site.all.each do |site|
|
4
|
+
next if site.name == 'yodel'
|
5
|
+
copy_missing_migrations_for_site(site)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.copy_missing_migrations_for_site(site)
|
10
|
+
# core yodel migrations
|
11
|
+
site_yodel_migrations_dir = File.join(site.migrations_directory, Yodel::YODEL_MIGRATIONS_DIRECTORY_NAME)
|
12
|
+
sync_migration_directories(Yodel.config.yodel_migration_directory, site_yodel_migrations_dir)
|
13
|
+
|
14
|
+
# extension migrations
|
15
|
+
extension_migrations_dir = File.join(site.root_directory, Yodel::MIGRATIONS_DIRECTORY_NAME, Yodel::EXTENSION_MIGRATIONS_DIRECTORY_NAME)
|
16
|
+
Yodel.config.extensions.each do |extension|
|
17
|
+
sync_migration_directories(extension.migrations_dir, File.join(extension_migrations_dir, extension.name))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.run_migrations_for_all_sites
|
22
|
+
Site.all.each do |site|
|
23
|
+
run_migrations(site)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
2
27
|
def self.run_migrations(site)
|
3
28
|
Yodel.config.logger.info "Migrating #{site.name}"
|
4
29
|
|
@@ -49,4 +74,17 @@ class Migration
|
|
49
74
|
Object.send(:remove_const, @migration.name.to_sym) if @migration
|
50
75
|
end
|
51
76
|
end
|
77
|
+
|
78
|
+
def self.sync_migration_directories(authoritative_folder, site_folder)
|
79
|
+
if File.exist?(site_folder)
|
80
|
+
Dir[File.join(authoritative_folder, '**/*.rb')].each do |file|
|
81
|
+
destination = File.join(site_folder, File.basename(file))
|
82
|
+
unless File.exist?(destination)
|
83
|
+
FileUtils.cp(file, destination)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
else
|
87
|
+
FileUtils.cp_r(authoritative_folder, site_folder)
|
88
|
+
end
|
89
|
+
end
|
52
90
|
end
|
@@ -58,13 +58,7 @@ class Site < MongoRecord
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def public_directories
|
61
|
-
@public_dirs ||=
|
62
|
-
if Yodel.env.production?
|
63
|
-
Yodel.config.public_directories + [public_directory]
|
64
|
-
else
|
65
|
-
Yodel.config.public_directories + [public_directory, attachments_directory]
|
66
|
-
end
|
67
|
-
end
|
61
|
+
@public_dirs ||= Yodel.config.public_directories + [public_directory]
|
68
62
|
end
|
69
63
|
|
70
64
|
def layouts_directory
|
data/lib/yodel/version.rb
CHANGED
@@ -14,7 +14,10 @@ Yodel.config.define do |config|
|
|
14
14
|
# environment
|
15
15
|
config.web_port = <%= web_port %>
|
16
16
|
config.dns_port = <%= dns_port %>
|
17
|
-
config.git_path =
|
17
|
+
config.git_path = '<%= git_path %>'
|
18
|
+
config.identify_path = '<%= identify_path %>'
|
19
|
+
config.convert_path = '<%= convert_path %>'
|
20
|
+
config.image_quality = 95
|
18
21
|
|
19
22
|
# logging
|
20
23
|
config.logger = Logger.new('/var/log/yodel.log')
|
@@ -11,9 +11,12 @@ Yodel.config.define do |config|
|
|
11
11
|
|
12
12
|
# environment
|
13
13
|
config.dns_port = <%= dns_port %>
|
14
|
-
config.git_path = `which git`.strip
|
15
14
|
config.public_directory = '<%= public_directory %>'
|
16
15
|
config.deploy_command = 'yodel'
|
16
|
+
config.git_path = '<%= git_path %>'
|
17
|
+
config.identify_path = '<%= identify_path %>'
|
18
|
+
config.convert_path = '<%= convert_path %>'
|
19
|
+
config.image_quality = 95
|
17
20
|
|
18
21
|
# logging
|
19
22
|
config.logger = Logger.new('/var/log/yodel.log')
|
data/yodel.gemspec
CHANGED
@@ -32,7 +32,6 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_runtime_dependency 'rubydns', '~> 0.3.3'
|
33
33
|
s.add_runtime_dependency 'git', '~> 1.2.5'
|
34
34
|
s.add_runtime_dependency 'highline', '~> 1.6.2'
|
35
|
-
s.add_runtime_dependency 'mini_magick', '~> 3.3'
|
36
35
|
s.add_runtime_dependency 'linguistics', '~> 1.0.9'
|
37
36
|
|
38
37
|
# extensions
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-18 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &70185758343000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.21
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70185758343000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack
|
27
|
-
requirement: &
|
27
|
+
requirement: &70185758336560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.3.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70185758336560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mongo
|
38
|
-
requirement: &
|
38
|
+
requirement: &70185758336040 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.3.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70185758336040
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bson
|
49
|
-
requirement: &
|
49
|
+
requirement: &70185758335500 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.3.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70185758335500
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bson_ext
|
60
|
-
requirement: &
|
60
|
+
requirement: &70185758334940 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.3.1
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70185758334940
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: plucky
|
71
|
-
requirement: &
|
71
|
+
requirement: &70185758334180 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.4.1
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70185758334180
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activesupport
|
82
|
-
requirement: &
|
82
|
+
requirement: &70185758333040 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 3.0.3
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70185758333040
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: ember
|
93
|
-
requirement: &
|
93
|
+
requirement: &70185758332380 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 0.3.1
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70185758332380
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: mail
|
104
|
-
requirement: &
|
104
|
+
requirement: &70185758331740 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 2.3.0
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70185758331740
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: hpricot
|
115
|
-
requirement: &
|
115
|
+
requirement: &70185758330900 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 0.8.4
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70185758330900
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: json
|
126
|
-
requirement: &
|
126
|
+
requirement: &70185758329800 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 1.6.1
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70185758329800
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: rack-contrib
|
137
|
-
requirement: &
|
137
|
+
requirement: &70185758328680 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: 1.1.0
|
143
143
|
type: :runtime
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70185758328680
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: rubydns
|
148
|
-
requirement: &
|
148
|
+
requirement: &70185758321500 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: 0.3.3
|
154
154
|
type: :runtime
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70185758321500
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: git
|
159
|
-
requirement: &
|
159
|
+
requirement: &70185758320840 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ~>
|
@@ -164,10 +164,10 @@ dependencies:
|
|
164
164
|
version: 1.2.5
|
165
165
|
type: :runtime
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70185758320840
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: highline
|
170
|
-
requirement: &
|
170
|
+
requirement: &70185758319960 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ~>
|
@@ -175,21 +175,10 @@ dependencies:
|
|
175
175
|
version: 1.6.2
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
179
|
-
- !ruby/object:Gem::Dependency
|
180
|
-
name: mini_magick
|
181
|
-
requirement: &70164834790920 !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: *70164834790920
|
178
|
+
version_requirements: *70185758319960
|
190
179
|
- !ruby/object:Gem::Dependency
|
191
180
|
name: linguistics
|
192
|
-
requirement: &
|
181
|
+
requirement: &70185758319260 !ruby/object:Gem::Requirement
|
193
182
|
none: false
|
194
183
|
requirements:
|
195
184
|
- - ~>
|
@@ -197,10 +186,10 @@ dependencies:
|
|
197
186
|
version: 1.0.9
|
198
187
|
type: :runtime
|
199
188
|
prerelease: false
|
200
|
-
version_requirements: *
|
189
|
+
version_requirements: *70185758319260
|
201
190
|
- !ruby/object:Gem::Dependency
|
202
191
|
name: yodel_admin
|
203
|
-
requirement: &
|
192
|
+
requirement: &70185758318680 !ruby/object:Gem::Requirement
|
204
193
|
none: false
|
205
194
|
requirements:
|
206
195
|
- - ! '>='
|
@@ -208,10 +197,10 @@ dependencies:
|
|
208
197
|
version: '0'
|
209
198
|
type: :runtime
|
210
199
|
prerelease: false
|
211
|
-
version_requirements: *
|
200
|
+
version_requirements: *70185758318680
|
212
201
|
- !ruby/object:Gem::Dependency
|
213
202
|
name: yodel_queue
|
214
|
-
requirement: &
|
203
|
+
requirement: &70185758318200 !ruby/object:Gem::Requirement
|
215
204
|
none: false
|
216
205
|
requirements:
|
217
206
|
- - ! '>='
|
@@ -219,10 +208,10 @@ dependencies:
|
|
219
208
|
version: '0'
|
220
209
|
type: :runtime
|
221
210
|
prerelease: false
|
222
|
-
version_requirements: *
|
211
|
+
version_requirements: *70185758318200
|
223
212
|
- !ruby/object:Gem::Dependency
|
224
213
|
name: yodel_blog
|
225
|
-
requirement: &
|
214
|
+
requirement: &70185758317780 !ruby/object:Gem::Requirement
|
226
215
|
none: false
|
227
216
|
requirements:
|
228
217
|
- - ! '>='
|
@@ -230,10 +219,10 @@ dependencies:
|
|
230
219
|
version: '0'
|
231
220
|
type: :runtime
|
232
221
|
prerelease: false
|
233
|
-
version_requirements: *
|
222
|
+
version_requirements: *70185758317780
|
234
223
|
- !ruby/object:Gem::Dependency
|
235
224
|
name: yodel_shop
|
236
|
-
requirement: &
|
225
|
+
requirement: &70185758317320 !ruby/object:Gem::Requirement
|
237
226
|
none: false
|
238
227
|
requirements:
|
239
228
|
- - ! '>='
|
@@ -241,10 +230,10 @@ dependencies:
|
|
241
230
|
version: '0'
|
242
231
|
type: :runtime
|
243
232
|
prerelease: false
|
244
|
-
version_requirements: *
|
233
|
+
version_requirements: *70185758317320
|
245
234
|
- !ruby/object:Gem::Dependency
|
246
235
|
name: yodel_development_environment
|
247
|
-
requirement: &
|
236
|
+
requirement: &70185758316820 !ruby/object:Gem::Requirement
|
248
237
|
none: false
|
249
238
|
requirements:
|
250
239
|
- - ! '>='
|
@@ -252,10 +241,10 @@ dependencies:
|
|
252
241
|
version: '0'
|
253
242
|
type: :runtime
|
254
243
|
prerelease: false
|
255
|
-
version_requirements: *
|
244
|
+
version_requirements: *70185758316820
|
256
245
|
- !ruby/object:Gem::Dependency
|
257
246
|
name: yodel_production_environment
|
258
|
-
requirement: &
|
247
|
+
requirement: &70185758316380 !ruby/object:Gem::Requirement
|
259
248
|
none: false
|
260
249
|
requirements:
|
261
250
|
- - ! '>='
|
@@ -263,7 +252,7 @@ dependencies:
|
|
263
252
|
version: '0'
|
264
253
|
type: :runtime
|
265
254
|
prerelease: false
|
266
|
-
version_requirements: *
|
255
|
+
version_requirements: *70185758316380
|
267
256
|
description: Yodel CMS
|
268
257
|
email:
|
269
258
|
- me@willcannings.com
|
@@ -288,7 +277,9 @@ files:
|
|
288
277
|
- lib/yodel/command/command.rb
|
289
278
|
- lib/yodel/command/deploy.rb
|
290
279
|
- lib/yodel/command/dns_server.rb
|
280
|
+
- lib/yodel/command/feedback.rb
|
291
281
|
- lib/yodel/command/installer.rb
|
282
|
+
- lib/yodel/command/restart.rb
|
292
283
|
- lib/yodel/config/config.rb
|
293
284
|
- lib/yodel/config/environment.rb
|
294
285
|
- lib/yodel/config/yodel.rb
|