locomotivecms_mounter 1.0.3 → 1.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/locomotive/mounter/engine_api.rb +1 -1
- data/lib/locomotive/mounter/models/content_type.rb +7 -1
- data/lib/locomotive/mounter/models/page.rb +15 -4
- data/lib/locomotive/mounter/reader/api/pages_reader.rb +20 -12
- data/lib/locomotive/mounter/reader/file_system/content_entries_reader.rb +2 -6
- data/lib/locomotive/mounter/version.rb +1 -1
- data/lib/locomotive/mounter/writer/api/pages_writer.rb +22 -1
- data/lib/locomotive/mounter/writer/api/theme_assets_writer.rb +18 -11
- data/lib/locomotive/mounter/writer/file_system/content_assets_writer.rb +2 -2
- data/lib/locomotive/mounter/writer/file_system/pages_writer.rb +22 -7
- data/lib/locomotive/mounter/writer/file_system/theme_assets_writer.rb +35 -3
- data/lib/locomotive/mounter/writer/file_system/translations_writer.rb +7 -3
- data/lib/locomotive/mounter/writer/file_system.rb +2 -27
- data/lib/locomotive/mounter/writer/runner.rb +1 -6
- data/lib/locomotive/mounter.rb +1 -0
- metadata +132 -132
@@ -33,7 +33,7 @@ module Locomotive
|
|
33
33
|
raise WrongCredentials.new("#{response['message']} (#{response.code})")
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def self.teardown
|
38
38
|
Locomotive::Mounter::EngineApi.default_options[:base_uri] = nil
|
39
39
|
Locomotive::Mounter::EngineApi.default_options[:default_params] = {}
|
@@ -64,7 +64,13 @@ module Locomotive
|
|
64
64
|
# do not forget that we are manipulating dynamic fields
|
65
65
|
attributes.each do |k, v|
|
66
66
|
begin
|
67
|
-
|
67
|
+
field = self.find_field(k)
|
68
|
+
|
69
|
+
if field.nil? && v.is_a?(Hash) # not a dynamic field but localized (permalink ?)
|
70
|
+
entry.send(:"#{k}_translations=", v)
|
71
|
+
else
|
72
|
+
entry.send(:"#{k}=", v)
|
73
|
+
end
|
68
74
|
rescue NoMethodError => e
|
69
75
|
Mounter.logger.error e.backtrace
|
70
76
|
raise FieldDoesNotExistException.new("The '#{self.slug}' content type does not have a field named '#{k}'.")
|
@@ -79,7 +79,15 @@ module Locomotive
|
|
79
79
|
# @return [ String ] A non-blank fullpath
|
80
80
|
#
|
81
81
|
def fullpath_or_default
|
82
|
-
self.fullpath || self.
|
82
|
+
self.fullpath || self.fullpath_in_default_locale
|
83
|
+
end
|
84
|
+
|
85
|
+
# Return the fullpath in the default locale no matter the current locale is.
|
86
|
+
#
|
87
|
+
# @return [ String ] The fullpath
|
88
|
+
#
|
89
|
+
def fullpath_in_default_locale
|
90
|
+
self.fullpath_translations[self.mounting_point.default_locale]
|
83
91
|
end
|
84
92
|
|
85
93
|
# Get the id of the parent page.
|
@@ -108,7 +116,6 @@ module Locomotive
|
|
108
116
|
self.content_type = content_type
|
109
117
|
end
|
110
118
|
|
111
|
-
|
112
119
|
# Modified setter in order to set correctly the slug
|
113
120
|
#
|
114
121
|
# @param [ String ] fullpath The fullpath
|
@@ -315,10 +322,14 @@ module Locomotive
|
|
315
322
|
|
316
323
|
_attributes = self.attributes.delete_if { |k, v| !fields.include?(k.to_s) || v.blank? }.deep_stringify_keys
|
317
324
|
|
318
|
-
|
325
|
+
# useless attributes
|
326
|
+
_attributes.delete('redirect_type') if self.redirect_url.blank?
|
319
327
|
|
320
|
-
#
|
328
|
+
# templatized page
|
329
|
+
_attributes['content_type'] = self.content_type.slug if self.templatized?
|
321
330
|
|
331
|
+
# editable elements
|
332
|
+
_attributes['editable_elements'] = {}
|
322
333
|
(self.editable_elements || []).each do |editable_element|
|
323
334
|
_attributes['editable_elements'].merge!(editable_element.to_yaml)
|
324
335
|
end
|
@@ -23,7 +23,8 @@ module Locomotive
|
|
23
23
|
|
24
24
|
self.build_relationships(index, self.pages_to_list)
|
25
25
|
|
26
|
-
# Locomotive::Mounter.with_locale(:
|
26
|
+
# Locomotive::Mounter.with_locale(:en) { self.to_s } # DEBUG
|
27
|
+
|
27
28
|
# self.to_s
|
28
29
|
|
29
30
|
self.pages
|
@@ -44,11 +45,14 @@ module Locomotive
|
|
44
45
|
|
45
46
|
def build_relationships(parent, list)
|
46
47
|
list.dup.each do |page|
|
47
|
-
next unless self.is_subpage_of?(page
|
48
|
+
next unless self.is_subpage_of?(page, parent)
|
48
49
|
|
49
50
|
# attach the page to the parent (order by position), also set the parent
|
50
51
|
parent.add_child(page)
|
51
52
|
|
53
|
+
# localize the fullpath in all the locales
|
54
|
+
page.localize_fullpath
|
55
|
+
|
52
56
|
# remove the page from the list
|
53
57
|
list.delete(page)
|
54
58
|
|
@@ -69,7 +73,7 @@ module Locomotive
|
|
69
73
|
Locomotive::Mounter.with_locale(locale) do
|
70
74
|
localized_attributes = self.get("pages/#{page._id}", locale)
|
71
75
|
|
72
|
-
#
|
76
|
+
# remove useless non localized attributes
|
73
77
|
localized_attributes.delete('target_klass_slug')
|
74
78
|
|
75
79
|
# isolate the editable elements
|
@@ -109,22 +113,25 @@ module Locomotive
|
|
109
113
|
self.pages[fullpath]
|
110
114
|
end
|
111
115
|
|
112
|
-
# Tell is a page described
|
113
|
-
# also described by its fullpath
|
116
|
+
# Tell is a page described is a sub page of a parent page
|
114
117
|
#
|
115
|
-
# @param [
|
116
|
-
# @param [
|
118
|
+
# @param [ Object ] page The full path of the page to test
|
119
|
+
# @param [ Object ] parent The full path of the parent page
|
117
120
|
#
|
118
121
|
# @return [ Boolean] True if the page is a sub page of the parent one
|
119
122
|
#
|
120
|
-
def is_subpage_of?(
|
121
|
-
return false if
|
123
|
+
def is_subpage_of?(page, parent)
|
124
|
+
return false if page.index_or_404?
|
125
|
+
|
126
|
+
if page.parent_id # only in the new version of the engine
|
127
|
+
return page.parent_id == parent._id
|
128
|
+
end
|
122
129
|
|
123
|
-
if
|
130
|
+
if parent.fullpath == 'index' && page.fullpath.split('/').size == 1
|
124
131
|
return true
|
125
132
|
end
|
126
133
|
|
127
|
-
File.dirname(fullpath.dasherize) ==
|
134
|
+
File.dirname(page.fullpath.dasherize) == parent.fullpath.dasherize
|
128
135
|
end
|
129
136
|
|
130
137
|
# Only keep the minimal attributes from a list of
|
@@ -146,7 +153,8 @@ module Locomotive
|
|
146
153
|
end
|
147
154
|
|
148
155
|
def safe_attributes
|
149
|
-
%w(_id title slug handle fullpath translated_in
|
156
|
+
%w(_id title slug handle fullpath translated_in
|
157
|
+
parent_id target_klass_slug
|
150
158
|
published listed templatized editable_elements
|
151
159
|
redirect_url cache_strategy response_type position
|
152
160
|
seo_title meta_keywords meta_description raw_template
|
@@ -71,14 +71,10 @@ module Locomotive
|
|
71
71
|
|
72
72
|
_attributes[:_position] = position
|
73
73
|
|
74
|
+
# build the content entry
|
74
75
|
entry = content_type.build_entry(_attributes)
|
75
76
|
|
76
|
-
#
|
77
|
-
# entry.main_locale = Locomotive::Mounter.locale
|
78
|
-
# puts entry.to_hash.inspect
|
79
|
-
# puts entry.dynamic_attributes.inspect
|
80
|
-
# puts entry.send(:sync_translations)
|
81
|
-
|
77
|
+
# and store it
|
82
78
|
key = File.join(content_type.slug, entry._slug)
|
83
79
|
|
84
80
|
self.items[key] = entry
|
@@ -128,7 +128,7 @@ module Locomotive
|
|
128
128
|
#
|
129
129
|
def layouts
|
130
130
|
self.pages.values.find_all do |page|
|
131
|
-
self.safely_translated?(page) &&
|
131
|
+
self.safely_translated?(page) && self.is_layout?(page)
|
132
132
|
end.sort { |a, b| a.depth <=> b.depth }
|
133
133
|
end
|
134
134
|
|
@@ -186,6 +186,27 @@ module Locomotive
|
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
189
|
+
# Tell if the page is a real layout, which means no extends tag inside
|
190
|
+
# and that at least one of the other pages reference it as a parent template.
|
191
|
+
#
|
192
|
+
# @param [ Object ] page The page
|
193
|
+
#
|
194
|
+
# @return [ Boolean] True if it is a real layout.
|
195
|
+
#
|
196
|
+
def is_layout?(page)
|
197
|
+
if page.is_layout?
|
198
|
+
# has child(ren) extending the page itself ?
|
199
|
+
return true if (page.children || []).any? { |child| child.layout == 'parent' }
|
200
|
+
|
201
|
+
fullpath = page.fullpath_in_default_locale
|
202
|
+
|
203
|
+
# among all the pages, is there a page extending the page itself ?
|
204
|
+
self.pages.values.any? { |_page| _page.fullpath_in_default_locale != fullpath && _page.layout == fullpath }
|
205
|
+
else
|
206
|
+
false # extends not present
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
189
210
|
# Return the parameters of a page sent by the API.
|
190
211
|
# It includes the editable_elements if the data option is enabled or
|
191
212
|
# if the page is a new one.
|
@@ -107,7 +107,7 @@ module Locomotive
|
|
107
107
|
File.new(path)
|
108
108
|
end
|
109
109
|
|
110
|
-
# Shortcut to get all the
|
110
|
+
# Shortcut to get all the theme assets.
|
111
111
|
#
|
112
112
|
# @return [ Hash ] The hash whose key is the slug and the value is the snippet itself
|
113
113
|
#
|
@@ -139,19 +139,26 @@ module Locomotive
|
|
139
139
|
#
|
140
140
|
def theme_asset_changed?(theme_asset, tmp_file)
|
141
141
|
if theme_asset.stylesheet_or_javascript?
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
142
|
+
# we need to compare compiled contents (sass, coffeescript) with the right urls
|
143
|
+
tmp_content = ''
|
144
|
+
|
145
|
+
begin
|
146
|
+
File.open(tmp_file, 'rb') do |file|
|
147
|
+
tmp_content = file.read.encode('utf-8', replace: nil)
|
148
|
+
end
|
149
|
+
rescue Encoding::UndefinedConversionError => e
|
150
|
+
# in the doubt, we prefer to return true
|
151
|
+
return true
|
148
152
|
end
|
153
|
+
|
154
|
+
tmp_content = tmp_content.gsub(/[("']([^)"']*)\/sites\/[0-9a-f]{24}\/theme\/(([^;.]+)\/)*([a-zA-Z_\-0-9]+\.[a-z]{2,3})[)"']/) do |path|
|
155
|
+
"#{path.first}/#{$2 + $4}#{path.last}"
|
156
|
+
end
|
157
|
+
|
158
|
+
tmp_content != theme_asset.content
|
149
159
|
else
|
150
|
-
|
160
|
+
Digest::SHA1.file(tmp_file).hexdigest != Digest::SHA1.file(theme_asset.filepath).hexdigest
|
151
161
|
end
|
152
|
-
|
153
|
-
# (!theme_asset.stylesheet_or_javascript? && File.size(file) != theme_asset.size) ||
|
154
|
-
# (theme_asset.stylesheet_or_javascript? && theme_asset.content.size != theme_asset.size)
|
155
162
|
end
|
156
163
|
|
157
164
|
end
|
@@ -12,8 +12,8 @@ module Locomotive
|
|
12
12
|
|
13
13
|
# It writes all the snippets into files
|
14
14
|
def write
|
15
|
-
self.mounting_point.content_assets.each do |asset|
|
16
|
-
self.open_file(self.target_asset_path(asset)) do |file|
|
15
|
+
self.mounting_point.content_assets.each do |_, asset|
|
16
|
+
self.open_file(self.target_asset_path(asset), 'wb') do |file|
|
17
17
|
file.write(asset.content)
|
18
18
|
end
|
19
19
|
end
|
@@ -30,9 +30,11 @@ module Locomotive
|
|
30
30
|
page.translated_in.each do |locale|
|
31
31
|
default_locale = locale.to_sym == self.mounting_point.default_locale.to_sym
|
32
32
|
|
33
|
-
|
33
|
+
# we do not need the localized version of the filepath
|
34
|
+
filepath = page.fullpath.dasherize
|
34
35
|
|
35
36
|
Locomotive::Mounter.with_locale(locale) do
|
37
|
+
# we assume the filepath is already localized
|
36
38
|
self.write_page_to_fs(page, filepath, default_locale ? nil : locale)
|
37
39
|
end
|
38
40
|
end
|
@@ -53,16 +55,29 @@ module Locomotive
|
|
53
55
|
#
|
54
56
|
#
|
55
57
|
def write_page_to_fs(page, filepath, locale)
|
58
|
+
# puts filepath.inspect
|
56
59
|
_filepath = "#{filepath}.liquid"
|
57
60
|
_filepath.gsub!(/.liquid$/, ".#{locale}.liquid") if locale
|
58
61
|
|
59
|
-
|
60
|
-
_filepath = File.join('app', 'views', 'pages', _filepath)
|
62
|
+
_filepath = File.join('app', 'views', 'pages', _filepath)
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
self.replace_content_asset_urls(page.source)
|
65
|
+
|
66
|
+
self.open_file(_filepath) do |file|
|
67
|
+
file.write(page.to_yaml)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# The content assets on the remote engine follows the format: /sites/<id>/assets/<type>/<file>
|
72
|
+
# This method replaces these urls by their local representation. <type>/<file>
|
73
|
+
#
|
74
|
+
# @param [ String ] content The text where the assets will be replaced.
|
75
|
+
#
|
76
|
+
def replace_content_asset_urls(content)
|
77
|
+
return if content.blank?
|
78
|
+
content.force_encoding('utf-8').gsub!(/[("']\/sites\/[0-9a-f]{24}\/assets\/(([^;.]+)\/)*([a-zA-Z_\-0-9]+)\.[a-z]{2,3}[)"']/) do |path|
|
79
|
+
"/#{$3}"
|
80
|
+
end
|
66
81
|
end
|
67
82
|
|
68
83
|
end
|
@@ -14,19 +14,51 @@ module Locomotive
|
|
14
14
|
# Write all the snippets into files
|
15
15
|
#
|
16
16
|
def write
|
17
|
-
self.
|
18
|
-
self.open_file(self.target_asset_path(asset)) do |file|
|
19
|
-
|
17
|
+
self.theme_assets_by_priority.each do |asset|
|
18
|
+
self.open_file(self.target_asset_path(asset), 'wb') do |file|
|
19
|
+
content = asset.content
|
20
|
+
|
21
|
+
if asset.stylesheet_or_javascript?
|
22
|
+
self.replace_asset_urls(content)
|
23
|
+
end
|
24
|
+
|
25
|
+
file.write(content)
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
23
29
|
|
24
30
|
protected
|
25
31
|
|
32
|
+
# The urls stored on the remote engine follows the format: /sites/<id>/theme/<type>/<file>
|
33
|
+
# This method replaces these urls by their local representation. <type>/<file>
|
34
|
+
#
|
35
|
+
# @param [ String ] content
|
36
|
+
#
|
37
|
+
def replace_asset_urls(content)
|
38
|
+
return if content.blank?
|
39
|
+
content.force_encoding('utf-8').gsub!(/[("']([^)"']*)\/sites\/[0-9a-f]{24}\/theme\/(([^;.]+)\/)*([a-zA-Z_\-0-9]+\.[a-z]{2,3})[)"']/) do |path|
|
40
|
+
"#{path.first}/#{$2 + $4}#{path.last}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Return the path where will be copied the asset
|
45
|
+
#
|
46
|
+
# @param [ String ] asset The asset
|
47
|
+
#
|
48
|
+
# @return [ String ] The relative path of the asset locally
|
49
|
+
#
|
26
50
|
def target_asset_path(asset)
|
27
51
|
File.join('public', asset.folder, asset.filename)
|
28
52
|
end
|
29
53
|
|
54
|
+
# List of theme assets sorted by their priority.
|
55
|
+
#
|
56
|
+
# @return [ Array ] Sorted list of the theme assets
|
57
|
+
#
|
58
|
+
def theme_assets_by_priority
|
59
|
+
self.mounting_point.theme_assets.sort { |a, b| a.priority <=> b.priority }
|
60
|
+
end
|
61
|
+
|
30
62
|
end
|
31
63
|
|
32
64
|
end
|
@@ -10,10 +10,14 @@ module Locomotive
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def write
|
13
|
+
content = self.mounting_point.translations.each_with_object({}) do |translation, hash|
|
14
|
+
hash[translation.key] = translation.values
|
15
|
+
end
|
16
|
+
|
17
|
+
content = content.empty? ? '' : content.to_yaml
|
18
|
+
|
13
19
|
self.open_file('config/translations.yml') do |file|
|
14
|
-
file.write
|
15
|
-
hash[translation.key] = translation.values
|
16
|
-
end.to_yaml
|
20
|
+
file.write content
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -16,23 +16,6 @@ module Locomotive
|
|
16
16
|
|
17
17
|
attr_accessor :target_path
|
18
18
|
|
19
|
-
# # Write the data of a mounting point instance to a target folder
|
20
|
-
# #
|
21
|
-
# # @param [ Hash ] parameters The parameters. It should contain the mounting_point and target_path keys.
|
22
|
-
# #
|
23
|
-
# # @return [ String ] The target path
|
24
|
-
# #
|
25
|
-
# def run!(parameters = {})
|
26
|
-
# self.mounting_point = parameters[:mounting_point]
|
27
|
-
|
28
|
-
|
29
|
-
# return nil if self.target_path.blank? || self.mounting_point.nil?
|
30
|
-
|
31
|
-
# self.write_all
|
32
|
-
|
33
|
-
# self.target_path
|
34
|
-
# end
|
35
|
-
|
36
19
|
# Check the existence of the target_path parameter
|
37
20
|
#
|
38
21
|
def prepare
|
@@ -48,18 +31,10 @@ module Locomotive
|
|
48
31
|
# @return [ Array ] List of the writer classes
|
49
32
|
#
|
50
33
|
def writers
|
51
|
-
[SiteWriter,
|
34
|
+
[SiteWriter, SnippetsWriter, ContentTypesWriter, ContentEntriesWriter, PagesWriter, ThemeAssetsWriter, TranslationsWriter]
|
35
|
+
# [SiteWriter, PagesWriter, SnippetsWriter, ContentTypesWriter, ContentEntriesWriter, ContentAssetsWriter, ThemeAssetsWriter, TranslationsWriter]
|
52
36
|
end
|
53
37
|
|
54
|
-
# # Execute all the writers
|
55
|
-
# def write_all
|
56
|
-
# self.writers.each do |klass|
|
57
|
-
# writer = klass.new(self.mounting_point, self.target_path)
|
58
|
-
# writer.prepare
|
59
|
-
# writer.write
|
60
|
-
# end
|
61
|
-
# end
|
62
|
-
|
63
38
|
end
|
64
39
|
|
65
40
|
end
|
@@ -52,12 +52,7 @@ module Locomotive
|
|
52
52
|
next if only && !only.include?(klass.name.demodulize)
|
53
53
|
writer = klass.new(self.mounting_point, self)
|
54
54
|
writer.prepare
|
55
|
-
|
56
|
-
writer.write
|
57
|
-
rescue Exception => e
|
58
|
-
Locomotive::Mounter.logger.error e.backtrace
|
59
|
-
puts "\n\nBlocking Error: #{e.message.colorize(:red)}"
|
60
|
-
end
|
55
|
+
writer.write
|
61
56
|
end
|
62
57
|
end
|
63
58
|
|
data/lib/locomotive/mounter.rb
CHANGED
metadata
CHANGED
@@ -1,416 +1,416 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locomotivecms_mounter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.4
|
4
5
|
prerelease:
|
5
|
-
version: 1.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Didier Lafforgue
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
prerelease: false
|
16
15
|
name: tilt
|
17
|
-
|
18
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
19
18
|
requirements:
|
20
19
|
- - '='
|
21
20
|
- !ruby/object:Gem::Version
|
22
21
|
version: 1.3.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
none: false
|
24
|
-
requirement: !ruby/object:Gem::Requirement
|
25
26
|
requirements:
|
26
27
|
- - '='
|
27
28
|
- !ruby/object:Gem::Version
|
28
29
|
version: 1.3.3
|
29
|
-
none: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
prerelease: false
|
32
31
|
name: haml
|
33
|
-
|
34
|
-
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
35
34
|
requirements:
|
36
35
|
- - '='
|
37
36
|
- !ruby/object:Gem::Version
|
38
37
|
version: 3.2.0.rc.2
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
41
|
none: false
|
40
|
-
requirement: !ruby/object:Gem::Requirement
|
41
42
|
requirements:
|
42
43
|
- - '='
|
43
44
|
- !ruby/object:Gem::Version
|
44
45
|
version: 3.2.0.rc.2
|
45
|
-
none: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
prerelease: false
|
48
47
|
name: sass
|
49
|
-
|
50
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
51
50
|
requirements:
|
52
51
|
- - ~>
|
53
52
|
- !ruby/object:Gem::Version
|
54
53
|
version: 3.2.1
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
57
|
none: false
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - ~>
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: 3.2.1
|
61
|
-
none: false
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
prerelease: false
|
64
63
|
name: compass
|
65
|
-
|
66
|
-
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
67
66
|
requirements:
|
68
67
|
- - ~>
|
69
68
|
- !ruby/object:Gem::Version
|
70
69
|
version: 0.12.1
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
73
|
none: false
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
74
|
requirements:
|
74
75
|
- - ~>
|
75
76
|
- !ruby/object:Gem::Version
|
76
77
|
version: 0.12.1
|
77
|
-
none: false
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
prerelease: false
|
80
79
|
name: coffee-script
|
81
|
-
|
82
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
83
82
|
requirements:
|
84
83
|
- - ~>
|
85
84
|
- !ruby/object:Gem::Version
|
86
85
|
version: 2.2.0
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
89
|
none: false
|
88
|
-
requirement: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
91
|
- - ~>
|
91
92
|
- !ruby/object:Gem::Version
|
92
93
|
version: 2.2.0
|
93
|
-
none: false
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
prerelease: false
|
96
95
|
name: less
|
97
|
-
|
98
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
99
98
|
requirements:
|
100
99
|
- - ~>
|
101
100
|
- !ruby/object:Gem::Version
|
102
101
|
version: 2.2.1
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
105
|
none: false
|
104
|
-
requirement: !ruby/object:Gem::Requirement
|
105
106
|
requirements:
|
106
107
|
- - ~>
|
107
108
|
- !ruby/object:Gem::Version
|
108
109
|
version: 2.2.1
|
109
|
-
none: false
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
|
-
prerelease: false
|
112
111
|
name: RedCloth
|
113
|
-
|
114
|
-
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
115
114
|
requirements:
|
116
115
|
- - ~>
|
117
116
|
- !ruby/object:Gem::Version
|
118
117
|
version: 4.2.3
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
121
|
none: false
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
123
|
- - ~>
|
123
124
|
- !ruby/object:Gem::Version
|
124
125
|
version: 4.2.3
|
125
|
-
none: false
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
prerelease: false
|
128
127
|
name: activesupport
|
129
|
-
|
130
|
-
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
131
130
|
requirements:
|
132
131
|
- - ~>
|
133
132
|
- !ruby/object:Gem::Version
|
134
133
|
version: 3.2.5
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
137
|
none: false
|
136
|
-
requirement: !ruby/object:Gem::Requirement
|
137
138
|
requirements:
|
138
139
|
- - ~>
|
139
140
|
- !ruby/object:Gem::Version
|
140
141
|
version: 3.2.5
|
141
|
-
none: false
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
|
-
prerelease: false
|
144
143
|
name: i18n
|
145
|
-
|
146
|
-
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
147
146
|
requirements:
|
148
147
|
- - ~>
|
149
148
|
- !ruby/object:Gem::Version
|
150
149
|
version: 0.6.0
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
151
153
|
none: false
|
152
|
-
requirement: !ruby/object:Gem::Requirement
|
153
154
|
requirements:
|
154
155
|
- - ~>
|
155
156
|
- !ruby/object:Gem::Version
|
156
157
|
version: 0.6.0
|
157
|
-
none: false
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
|
-
prerelease: false
|
160
159
|
name: stringex
|
161
|
-
|
162
|
-
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
163
162
|
requirements:
|
164
163
|
- - ~>
|
165
164
|
- !ruby/object:Gem::Version
|
166
165
|
version: 1.4.0
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
169
|
none: false
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
169
170
|
requirements:
|
170
171
|
- - ~>
|
171
172
|
- !ruby/object:Gem::Version
|
172
173
|
version: 1.4.0
|
173
|
-
none: false
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
|
-
prerelease: false
|
176
175
|
name: multi_json
|
177
|
-
|
178
|
-
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
179
178
|
requirements:
|
180
179
|
- - ~>
|
181
180
|
- !ruby/object:Gem::Version
|
182
181
|
version: 1.2.0
|
182
|
+
type: :runtime
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
185
|
none: false
|
184
|
-
requirement: !ruby/object:Gem::Requirement
|
185
186
|
requirements:
|
186
187
|
- - ~>
|
187
188
|
- !ruby/object:Gem::Version
|
188
189
|
version: 1.2.0
|
189
|
-
none: false
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
|
-
prerelease: false
|
192
191
|
name: httmultiparty
|
193
|
-
|
194
|
-
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
195
194
|
requirements:
|
196
195
|
- - '='
|
197
196
|
- !ruby/object:Gem::Version
|
198
197
|
version: 0.3.8
|
198
|
+
type: :runtime
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
199
201
|
none: false
|
200
|
-
requirement: !ruby/object:Gem::Requirement
|
201
202
|
requirements:
|
202
203
|
- - '='
|
203
204
|
- !ruby/object:Gem::Version
|
204
205
|
version: 0.3.8
|
205
|
-
none: false
|
206
206
|
- !ruby/object:Gem::Dependency
|
207
|
-
prerelease: false
|
208
207
|
name: json
|
209
|
-
|
210
|
-
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
211
210
|
requirements:
|
212
211
|
- - ~>
|
213
212
|
- !ruby/object:Gem::Version
|
214
213
|
version: 1.6.5
|
214
|
+
type: :runtime
|
215
|
+
prerelease: false
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
215
217
|
none: false
|
216
|
-
requirement: !ruby/object:Gem::Requirement
|
217
218
|
requirements:
|
218
219
|
- - ~>
|
219
220
|
- !ruby/object:Gem::Version
|
220
221
|
version: 1.6.5
|
221
|
-
none: false
|
222
222
|
- !ruby/object:Gem::Dependency
|
223
|
-
prerelease: false
|
224
223
|
name: mime-types
|
225
|
-
|
226
|
-
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
227
226
|
requirements:
|
228
227
|
- - ~>
|
229
228
|
- !ruby/object:Gem::Version
|
230
229
|
version: '1.19'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
231
233
|
none: false
|
232
|
-
requirement: !ruby/object:Gem::Requirement
|
233
234
|
requirements:
|
234
235
|
- - ~>
|
235
236
|
- !ruby/object:Gem::Version
|
236
237
|
version: '1.19'
|
237
|
-
none: false
|
238
238
|
- !ruby/object:Gem::Dependency
|
239
|
-
prerelease: false
|
240
239
|
name: zip
|
241
|
-
|
242
|
-
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
241
|
+
none: false
|
243
242
|
requirements:
|
244
243
|
- - ~>
|
245
244
|
- !ruby/object:Gem::Version
|
246
245
|
version: 2.0.2
|
246
|
+
type: :runtime
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
249
|
none: false
|
248
|
-
requirement: !ruby/object:Gem::Requirement
|
249
250
|
requirements:
|
250
251
|
- - ~>
|
251
252
|
- !ruby/object:Gem::Version
|
252
253
|
version: 2.0.2
|
253
|
-
none: false
|
254
254
|
- !ruby/object:Gem::Dependency
|
255
|
-
prerelease: false
|
256
255
|
name: colorize
|
257
|
-
|
258
|
-
|
256
|
+
requirement: !ruby/object:Gem::Requirement
|
257
|
+
none: false
|
259
258
|
requirements:
|
260
259
|
- - ~>
|
261
260
|
- !ruby/object:Gem::Version
|
262
261
|
version: 0.5.8
|
262
|
+
type: :runtime
|
263
|
+
prerelease: false
|
264
|
+
version_requirements: !ruby/object:Gem::Requirement
|
263
265
|
none: false
|
264
|
-
requirement: !ruby/object:Gem::Requirement
|
265
266
|
requirements:
|
266
267
|
- - ~>
|
267
268
|
- !ruby/object:Gem::Version
|
268
269
|
version: 0.5.8
|
269
|
-
none: false
|
270
270
|
- !ruby/object:Gem::Dependency
|
271
|
-
prerelease: false
|
272
271
|
name: logger
|
273
|
-
|
274
|
-
|
272
|
+
requirement: !ruby/object:Gem::Requirement
|
273
|
+
none: false
|
275
274
|
requirements:
|
276
275
|
- - ! '>='
|
277
276
|
- !ruby/object:Gem::Version
|
278
277
|
version: '0'
|
278
|
+
type: :runtime
|
279
|
+
prerelease: false
|
280
|
+
version_requirements: !ruby/object:Gem::Requirement
|
279
281
|
none: false
|
280
|
-
requirement: !ruby/object:Gem::Requirement
|
281
282
|
requirements:
|
282
283
|
- - ! '>='
|
283
284
|
- !ruby/object:Gem::Version
|
284
285
|
version: '0'
|
285
|
-
none: false
|
286
286
|
- !ruby/object:Gem::Dependency
|
287
|
-
prerelease: false
|
288
287
|
name: rake
|
289
|
-
|
290
|
-
|
288
|
+
requirement: !ruby/object:Gem::Requirement
|
289
|
+
none: false
|
291
290
|
requirements:
|
292
291
|
- - '='
|
293
292
|
- !ruby/object:Gem::Version
|
294
293
|
version: 0.9.2
|
294
|
+
type: :development
|
295
|
+
prerelease: false
|
296
|
+
version_requirements: !ruby/object:Gem::Requirement
|
295
297
|
none: false
|
296
|
-
requirement: !ruby/object:Gem::Requirement
|
297
298
|
requirements:
|
298
299
|
- - '='
|
299
300
|
- !ruby/object:Gem::Version
|
300
301
|
version: 0.9.2
|
301
|
-
none: false
|
302
302
|
- !ruby/object:Gem::Dependency
|
303
|
-
prerelease: false
|
304
303
|
name: rspec
|
305
|
-
|
306
|
-
|
304
|
+
requirement: !ruby/object:Gem::Requirement
|
305
|
+
none: false
|
307
306
|
requirements:
|
308
307
|
- - ~>
|
309
308
|
- !ruby/object:Gem::Version
|
310
309
|
version: 2.6.0
|
310
|
+
type: :development
|
311
|
+
prerelease: false
|
312
|
+
version_requirements: !ruby/object:Gem::Requirement
|
311
313
|
none: false
|
312
|
-
requirement: !ruby/object:Gem::Requirement
|
313
314
|
requirements:
|
314
315
|
- - ~>
|
315
316
|
- !ruby/object:Gem::Version
|
316
317
|
version: 2.6.0
|
317
|
-
none: false
|
318
318
|
- !ruby/object:Gem::Dependency
|
319
|
-
prerelease: false
|
320
319
|
name: mocha
|
321
|
-
|
322
|
-
|
320
|
+
requirement: !ruby/object:Gem::Requirement
|
321
|
+
none: false
|
323
322
|
requirements:
|
324
323
|
- - '='
|
325
324
|
- !ruby/object:Gem::Version
|
326
325
|
version: 0.9.12
|
326
|
+
type: :development
|
327
|
+
prerelease: false
|
328
|
+
version_requirements: !ruby/object:Gem::Requirement
|
327
329
|
none: false
|
328
|
-
requirement: !ruby/object:Gem::Requirement
|
329
330
|
requirements:
|
330
331
|
- - '='
|
331
332
|
- !ruby/object:Gem::Version
|
332
333
|
version: 0.9.12
|
333
|
-
none: false
|
334
334
|
- !ruby/object:Gem::Dependency
|
335
|
-
prerelease: false
|
336
335
|
name: rack-test
|
337
|
-
|
338
|
-
|
336
|
+
requirement: !ruby/object:Gem::Requirement
|
337
|
+
none: false
|
339
338
|
requirements:
|
340
339
|
- - ~>
|
341
340
|
- !ruby/object:Gem::Version
|
342
341
|
version: 0.6.1
|
342
|
+
type: :development
|
343
|
+
prerelease: false
|
344
|
+
version_requirements: !ruby/object:Gem::Requirement
|
343
345
|
none: false
|
344
|
-
requirement: !ruby/object:Gem::Requirement
|
345
346
|
requirements:
|
346
347
|
- - ~>
|
347
348
|
- !ruby/object:Gem::Version
|
348
349
|
version: 0.6.1
|
349
|
-
none: false
|
350
350
|
- !ruby/object:Gem::Dependency
|
351
|
-
prerelease: false
|
352
351
|
name: ruby-debug-wrapper
|
353
|
-
|
354
|
-
|
352
|
+
requirement: !ruby/object:Gem::Requirement
|
353
|
+
none: false
|
355
354
|
requirements:
|
356
355
|
- - ~>
|
357
356
|
- !ruby/object:Gem::Version
|
358
357
|
version: 0.0.1
|
358
|
+
type: :development
|
359
|
+
prerelease: false
|
360
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
361
|
none: false
|
360
|
-
requirement: !ruby/object:Gem::Requirement
|
361
362
|
requirements:
|
362
363
|
- - ~>
|
363
364
|
- !ruby/object:Gem::Version
|
364
365
|
version: 0.0.1
|
365
|
-
none: false
|
366
366
|
- !ruby/object:Gem::Dependency
|
367
|
-
prerelease: false
|
368
367
|
name: vcr
|
369
|
-
|
370
|
-
|
368
|
+
requirement: !ruby/object:Gem::Requirement
|
369
|
+
none: false
|
371
370
|
requirements:
|
372
371
|
- - '='
|
373
372
|
- !ruby/object:Gem::Version
|
374
373
|
version: 2.4.0
|
374
|
+
type: :development
|
375
|
+
prerelease: false
|
376
|
+
version_requirements: !ruby/object:Gem::Requirement
|
375
377
|
none: false
|
376
|
-
requirement: !ruby/object:Gem::Requirement
|
377
378
|
requirements:
|
378
379
|
- - '='
|
379
380
|
- !ruby/object:Gem::Version
|
380
381
|
version: 2.4.0
|
381
|
-
none: false
|
382
382
|
- !ruby/object:Gem::Dependency
|
383
|
-
prerelease: false
|
384
383
|
name: therubyracer
|
385
|
-
|
386
|
-
|
384
|
+
requirement: !ruby/object:Gem::Requirement
|
385
|
+
none: false
|
387
386
|
requirements:
|
388
387
|
- - ~>
|
389
388
|
- !ruby/object:Gem::Version
|
390
389
|
version: 0.10.2
|
390
|
+
type: :development
|
391
|
+
prerelease: false
|
392
|
+
version_requirements: !ruby/object:Gem::Requirement
|
391
393
|
none: false
|
392
|
-
requirement: !ruby/object:Gem::Requirement
|
393
394
|
requirements:
|
394
395
|
- - ~>
|
395
396
|
- !ruby/object:Gem::Version
|
396
397
|
version: 0.10.2
|
397
|
-
none: false
|
398
398
|
- !ruby/object:Gem::Dependency
|
399
|
-
prerelease: false
|
400
399
|
name: webmock
|
401
|
-
|
402
|
-
|
400
|
+
requirement: !ruby/object:Gem::Requirement
|
401
|
+
none: false
|
403
402
|
requirements:
|
404
403
|
- - '='
|
405
404
|
- !ruby/object:Gem::Version
|
406
405
|
version: 1.9.3
|
406
|
+
type: :development
|
407
|
+
prerelease: false
|
408
|
+
version_requirements: !ruby/object:Gem::Requirement
|
407
409
|
none: false
|
408
|
-
requirement: !ruby/object:Gem::Requirement
|
409
410
|
requirements:
|
410
411
|
- - '='
|
411
412
|
- !ruby/object:Gem::Version
|
412
413
|
version: 1.9.3
|
413
|
-
none: false
|
414
414
|
description: Mount any LocomotiveCMS site, from a template on the filesystem, a zip
|
415
415
|
file or even an online engine
|
416
416
|
email:
|
@@ -496,23 +496,23 @@ rdoc_options: []
|
|
496
496
|
require_paths:
|
497
497
|
- lib
|
498
498
|
required_ruby_version: !ruby/object:Gem::Requirement
|
499
|
+
none: false
|
499
500
|
requirements:
|
500
501
|
- - ! '>='
|
501
502
|
- !ruby/object:Gem::Version
|
503
|
+
version: '0'
|
502
504
|
segments:
|
503
505
|
- 0
|
504
|
-
hash:
|
505
|
-
version: '0'
|
506
|
-
none: false
|
506
|
+
hash: 2290558764515626735
|
507
507
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
508
|
+
none: false
|
508
509
|
requirements:
|
509
510
|
- - ! '>='
|
510
511
|
- !ruby/object:Gem::Version
|
511
512
|
version: 1.3.6
|
512
|
-
none: false
|
513
513
|
requirements: []
|
514
514
|
rubyforge_project: locomotivecms_mounter
|
515
|
-
rubygems_version: 1.8.
|
515
|
+
rubygems_version: 1.8.23
|
516
516
|
signing_key:
|
517
517
|
specification_version: 3
|
518
518
|
summary: LocomotiveCMS Mounter
|