machined 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/bin/machined +3 -3
- data/lib/machined.rb +17 -17
- data/lib/machined/cli.rb +35 -35
- data/lib/machined/context.rb +4 -4
- data/lib/machined/environment.rb +57 -31
- data/lib/machined/helpers/asset_tag_helpers.rb +4 -4
- data/lib/machined/helpers/locals_helpers.rb +1 -1
- data/lib/machined/helpers/output_helpers.rb +15 -15
- data/lib/machined/helpers/page_helpers.rb +1 -1
- data/lib/machined/helpers/render_helpers.rb +16 -16
- data/lib/machined/index.rb +1 -1
- data/lib/machined/initializable.rb +9 -11
- data/lib/machined/processors/front_matter_processor.rb +2 -2
- data/lib/machined/processors/layout_processor.rb +1 -1
- data/lib/machined/server.rb +2 -2
- data/lib/machined/sprocket.rb +4 -4
- data/lib/machined/static_compiler.rb +2 -2
- data/lib/machined/templates/site/Gemfile.tt +4 -4
- data/lib/machined/templates/site/config.ru +1 -1
- data/lib/machined/templates/site/machined.rb +2 -2
- data/lib/machined/templates/site/views/layouts/application.html.erb +2 -2
- data/lib/machined/utils.rb +3 -3
- data/lib/machined/version.rb +1 -1
- data/machined.gemspec +29 -31
- data/spec/machined/cli_spec.rb +56 -56
- data/spec/machined/context_spec.rb +6 -6
- data/spec/machined/environment_spec.rb +94 -94
- data/spec/machined/helpers/asset_tag_helpers_spec.rb +42 -42
- data/spec/machined/helpers/locals_helper_spec.rb +17 -17
- data/spec/machined/helpers/output_helpers_spec.rb +27 -27
- data/spec/machined/helpers/page_helpers_spec.rb +32 -32
- data/spec/machined/helpers/render_helpers_spec.rb +42 -42
- data/spec/machined/initializable_spec.rb +9 -9
- data/spec/machined/processors/front_matter_processor_spec.rb +7 -7
- data/spec/machined/processors/layout_processor_spec.rb +19 -19
- data/spec/machined/server_spec.rb +36 -36
- data/spec/machined/sprocket_spec.rb +15 -15
- data/spec/machined/utils_spec.rb +14 -14
- data/spec/spec_helper.rb +7 -7
- data/spec/support/be_fresh_matcher.rb +2 -2
- data/spec/support/helpers.rb +6 -6
- metadata +177 -301
data/Rakefile
CHANGED
data/bin/machined
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
ENV[
|
4
|
-
require
|
3
|
+
ENV['BUNDLE_GEMFILE'] ||= File.join(Dir.pwd, 'Gemfile')
|
4
|
+
require 'bundler/setup' if File.exist? ENV['BUNDLE_GEMFILE']
|
5
5
|
|
6
|
-
require
|
6
|
+
require 'machined'
|
7
7
|
Machined::CLI.start
|
data/lib/machined.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
require
|
1
|
+
require 'machined/version'
|
2
2
|
|
3
3
|
module Machined
|
4
|
-
autoload :CLI,
|
5
|
-
autoload :Context,
|
6
|
-
autoload :Environment,
|
7
|
-
autoload :Index,
|
8
|
-
autoload :Initializable,
|
9
|
-
autoload :Server,
|
10
|
-
autoload :Sprocket,
|
11
|
-
autoload :StaticCompiler,
|
12
|
-
autoload :Utils,
|
4
|
+
autoload :CLI, 'machined/cli'
|
5
|
+
autoload :Context, 'machined/context'
|
6
|
+
autoload :Environment, 'machined/environment'
|
7
|
+
autoload :Index, 'machined/index'
|
8
|
+
autoload :Initializable, 'machined/initializable'
|
9
|
+
autoload :Server, 'machined/server'
|
10
|
+
autoload :Sprocket, 'machined/sprocket'
|
11
|
+
autoload :StaticCompiler, 'machined/static_compiler'
|
12
|
+
autoload :Utils, 'machined/utils'
|
13
13
|
|
14
14
|
module Helpers
|
15
|
-
autoload :AssetTagHelpers,
|
16
|
-
autoload :LocalsHelpers,
|
17
|
-
autoload :OutputHelpers,
|
18
|
-
autoload :PageHelpers,
|
19
|
-
autoload :RenderHelpers,
|
15
|
+
autoload :AssetTagHelpers, 'machined/helpers/asset_tag_helpers'
|
16
|
+
autoload :LocalsHelpers, 'machined/helpers/locals_helpers'
|
17
|
+
autoload :OutputHelpers, 'machined/helpers/output_helpers'
|
18
|
+
autoload :PageHelpers, 'machined/helpers/page_helpers'
|
19
|
+
autoload :RenderHelpers, 'machined/helpers/render_helpers'
|
20
20
|
end
|
21
21
|
|
22
22
|
module Processors
|
23
|
-
autoload :FrontMatterProcessor,
|
24
|
-
autoload :LayoutProcessor,
|
23
|
+
autoload :FrontMatterProcessor, 'machined/processors/front_matter_processor'
|
24
|
+
autoload :LayoutProcessor, 'machined/processors/layout_processor'
|
25
25
|
end
|
26
26
|
end
|
data/lib/machined/cli.rb
CHANGED
@@ -1,60 +1,60 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'active_support/core_ext/hash/keys'
|
2
|
+
require 'active_support/core_ext/hash/slice'
|
3
|
+
require 'thor'
|
4
4
|
|
5
5
|
module Machined
|
6
6
|
class CLI < Thor
|
7
7
|
include Thor::Actions
|
8
8
|
|
9
9
|
default_task :help
|
10
|
-
source_root File.expand_path(
|
10
|
+
source_root File.expand_path('../templates', __FILE__)
|
11
11
|
|
12
|
-
class_option
|
13
|
-
:desc =>
|
14
|
-
:default =>
|
15
|
-
class_option
|
16
|
-
:desc =>
|
17
|
-
:default =>
|
18
|
-
class_option
|
19
|
-
:desc =>
|
20
|
-
:default =>
|
21
|
-
class_option
|
22
|
-
:desc =>
|
23
|
-
:default =>
|
12
|
+
class_option 'root', :aliases => '-r',
|
13
|
+
:desc => 'Path to the root directory of the project',
|
14
|
+
:default => '.'
|
15
|
+
class_option 'config_path', :aliases => '-c',
|
16
|
+
:desc => 'Path to the config file',
|
17
|
+
:default => 'machined.rb'
|
18
|
+
class_option 'output_path', :aliases => '-o',
|
19
|
+
:desc => 'Path to the output directory of the project',
|
20
|
+
:default => 'public'
|
21
|
+
class_option 'environment', :aliases => '-e',
|
22
|
+
:desc => 'Sets the environment',
|
23
|
+
:default => 'development'
|
24
24
|
|
25
|
-
desc
|
25
|
+
desc 'compile', 'Compiles the site from the source files'
|
26
26
|
def compile
|
27
27
|
machined.compile
|
28
28
|
end
|
29
29
|
map %w(c build b) => :compile
|
30
30
|
|
31
|
-
desc
|
31
|
+
desc 'new SITE_NAME', 'Generates a new site with the give name'
|
32
32
|
def new(site_name)
|
33
|
-
directory
|
33
|
+
directory 'site', site_name
|
34
34
|
end
|
35
35
|
map %w(n generate g) => :new
|
36
36
|
|
37
|
-
desc
|
38
|
-
method_option :port, :aliases =>
|
39
|
-
:desc =>
|
37
|
+
desc 'server', 'Runs a local Rack based web server'
|
38
|
+
method_option :port, :aliases => '-p',
|
39
|
+
:desc => 'Serve at the given port',
|
40
40
|
:type => :numeric, :default => 3000
|
41
|
-
method_option :host, :aliases =>
|
42
|
-
:desc =>
|
43
|
-
:default =>
|
44
|
-
method_option :server, :aliases =>
|
45
|
-
:desc =>
|
46
|
-
method_option :daemonize, :aliases =>
|
47
|
-
:desc =>
|
41
|
+
method_option :host, :aliases => '-h',
|
42
|
+
:desc => 'Listen on the given given host',
|
43
|
+
:default => '0.0.0.0'
|
44
|
+
method_option :server, :aliases => '-s',
|
45
|
+
:desc => 'Serve with the given handler'
|
46
|
+
method_option :daemonize, :aliases => '-D',
|
47
|
+
:desc => 'Run daemonized in the background',
|
48
48
|
:type => :boolean
|
49
|
-
method_option :pid, :aliases =>
|
50
|
-
:desc =>
|
49
|
+
method_option :pid, :aliases => '-P',
|
50
|
+
:desc => 'File to store PID'
|
51
51
|
def server
|
52
|
-
require
|
52
|
+
require 'rack'
|
53
53
|
Rack::Server.start rack_options
|
54
54
|
end
|
55
55
|
map %w(s rackup r) => :server
|
56
56
|
|
57
|
-
desc
|
57
|
+
desc 'version', 'Prints out the version'
|
58
58
|
def version
|
59
59
|
say VERSION
|
60
60
|
end
|
@@ -66,10 +66,10 @@ module Machined
|
|
66
66
|
@machined ||= Environment.new machined_options
|
67
67
|
end
|
68
68
|
|
69
|
-
# Returns the current environment, using the
|
69
|
+
# Returns the current environment, using the 'RACK_ENV' variable
|
70
70
|
# if set.
|
71
71
|
def environment # :nodoc
|
72
|
-
ENV[
|
72
|
+
ENV['RACK_ENV'] || options['environment']
|
73
73
|
end
|
74
74
|
|
75
75
|
# Returns the options needed for setting up
|
data/lib/machined/context.rb
CHANGED
data/lib/machined/environment.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'ostruct'
|
2
|
+
require 'pathname'
|
3
|
+
require 'active_support/cache'
|
4
|
+
require 'active_support/core_ext/hash/reverse_merge'
|
5
|
+
require 'crush'
|
6
|
+
require 'tilt'
|
6
7
|
|
7
8
|
module Machined
|
8
9
|
class Environment
|
@@ -11,24 +12,25 @@ module Machined
|
|
11
12
|
# Default options for a Machined environment.
|
12
13
|
DEFAULT_OPTIONS = {
|
13
14
|
# Global configuration
|
14
|
-
:root =>
|
15
|
-
:config_path =>
|
16
|
-
:output_path =>
|
17
|
-
:environment =>
|
15
|
+
:root => '.',
|
16
|
+
:config_path => 'machined.rb',
|
17
|
+
:output_path => 'public',
|
18
|
+
:environment => 'development',
|
19
|
+
:cache => nil,
|
18
20
|
:skip_bundle => false,
|
19
21
|
:assets_only => false,
|
20
22
|
:digest_assets => false,
|
21
23
|
:gzip_assets => false,
|
22
|
-
:layout =>
|
24
|
+
:layout => 'application',
|
23
25
|
|
24
26
|
# Sprocket paths and URLs
|
25
|
-
:assets_path =>
|
27
|
+
:assets_path => 'assets',
|
26
28
|
:assets_paths => %w(app/assets lib/assets vendor/assets),
|
27
|
-
:assets_url =>
|
28
|
-
:pages_path =>
|
29
|
+
:assets_url => '/assets',
|
30
|
+
:pages_path => 'pages',
|
29
31
|
:pages_paths => %w(app/pages),
|
30
|
-
:pages_url =>
|
31
|
-
:views_path =>
|
32
|
+
:pages_url => '/',
|
33
|
+
:views_path => 'views',
|
32
34
|
:views_paths => %w(app/views),
|
33
35
|
|
34
36
|
# Compression configuration
|
@@ -114,9 +116,10 @@ module Machined
|
|
114
116
|
initializer :require_bundle do
|
115
117
|
next if config.skip_bundle
|
116
118
|
|
117
|
-
ENV[
|
118
|
-
if File.exist? ENV[
|
119
|
-
require
|
119
|
+
ENV['BUNDLE_GEMFILE'] ||= root.join('Gemfile').to_s
|
120
|
+
if File.exist? ENV['BUNDLE_GEMFILE']
|
121
|
+
require 'bundler/setup'
|
122
|
+
require 'sprockets'
|
120
123
|
Bundler.require :default, config.environment.to_sym
|
121
124
|
end
|
122
125
|
end
|
@@ -135,9 +138,9 @@ module Machined
|
|
135
138
|
next if config.assets_only
|
136
139
|
|
137
140
|
append_sprocket :pages do |pages|
|
138
|
-
pages.register_mime_type
|
139
|
-
pages.register_preprocessor
|
140
|
-
pages.register_postprocessor
|
141
|
+
pages.register_mime_type 'text/html', '.html'
|
142
|
+
pages.register_preprocessor 'text/html', Processors::FrontMatterProcessor
|
143
|
+
pages.register_postprocessor 'text/html', Processors::LayoutProcessor
|
141
144
|
end
|
142
145
|
end
|
143
146
|
|
@@ -147,7 +150,7 @@ module Machined
|
|
147
150
|
# the layouts for the `pages` sprocket will be located here.
|
148
151
|
initializer :create_views_sprocket do
|
149
152
|
append_sprocket :views, :compile => false do |views|
|
150
|
-
views.register_mime_type
|
153
|
+
views.register_mime_type 'text/html', '.html'
|
151
154
|
end
|
152
155
|
end
|
153
156
|
|
@@ -172,6 +175,20 @@ module Machined
|
|
172
175
|
end
|
173
176
|
end
|
174
177
|
|
178
|
+
# Setup the global cache. Defaults to an in memory
|
179
|
+
# caching for development, and a file based cache for production.
|
180
|
+
initializer :configure_cache do
|
181
|
+
if config.cache.nil?
|
182
|
+
if config.environment == 'production'
|
183
|
+
config.cache = :file_store, 'tmp/cache'
|
184
|
+
else
|
185
|
+
config.cache = :memory_store
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
config.cache = ActiveSupport::Cache.lookup_store(*config.cache)
|
190
|
+
end
|
191
|
+
|
175
192
|
# Do any configuration to the assets sprockets necessary
|
176
193
|
# after the config file has been evaled.
|
177
194
|
initializer :configure_assets_sprocket do
|
@@ -189,14 +206,17 @@ module Machined
|
|
189
206
|
# Search for Rails Engines with assets and append those
|
190
207
|
if defined? Rails::Engine
|
191
208
|
Rails::Engine.subclasses.each do |engine|
|
192
|
-
append_paths assets, engine.paths[
|
193
|
-
append_paths assets, engine.paths[
|
194
|
-
append_paths assets, engine.paths[
|
209
|
+
append_paths assets, engine.paths['app/assets'].existent_directories
|
210
|
+
append_paths assets, engine.paths['lib/assets'].existent_directories
|
211
|
+
append_paths assets, engine.paths['vendor/assets'].existent_directories
|
195
212
|
end
|
196
213
|
end
|
197
214
|
|
198
215
|
# Setup the base URL for the assets (like the Rails asset_prefix)
|
199
216
|
assets.config.url = config.assets_url
|
217
|
+
|
218
|
+
# Use the global cache store
|
219
|
+
assets.cache = config.cache
|
200
220
|
end
|
201
221
|
|
202
222
|
# Do any configuration to the pages sprockets necessary
|
@@ -210,6 +230,9 @@ module Machined
|
|
210
230
|
|
211
231
|
# Setup the base URL for the pages
|
212
232
|
pages.config.url = config.pages_url
|
233
|
+
|
234
|
+
# Use the global cache store
|
235
|
+
pages.cache = config.cache
|
213
236
|
end
|
214
237
|
|
215
238
|
# Do any configuration to the views sprockets necessary
|
@@ -220,6 +243,9 @@ module Machined
|
|
220
243
|
# Append the configured views paths
|
221
244
|
append_path views, config.views_path
|
222
245
|
append_paths views, config.views_paths
|
246
|
+
|
247
|
+
# Use the global cache store
|
248
|
+
views.cache = config.cache
|
223
249
|
end
|
224
250
|
|
225
251
|
# Setup the JavaScript and CSS compressors
|
@@ -269,13 +295,13 @@ module Machined
|
|
269
295
|
# and appends it to the #sprockets list. This will also create
|
270
296
|
# an accessor with the given name that references the created sprocket.
|
271
297
|
#
|
272
|
-
# machined.append_sprocket :updates, :url =>
|
273
|
-
# updates.append_path
|
298
|
+
# machined.append_sprocket :updates, :url => '/news' do |updates|
|
299
|
+
# updates.append_path 'updates'
|
274
300
|
# end
|
275
301
|
#
|
276
302
|
# machined.updates # => #<Machined::Sprocket...>
|
277
|
-
# machined.updates.config.url # =>
|
278
|
-
# machined.updates.paths # => [
|
303
|
+
# machined.updates.config.url # => '/news'
|
304
|
+
# machined.updates.paths # => [ '.../updates' ]
|
279
305
|
#
|
280
306
|
def append_sprocket(name, options = {}, &block)
|
281
307
|
create_sprocket(name, options, &block).tap do |sprocket|
|
@@ -388,7 +414,7 @@ module Machined
|
|
388
414
|
JS_COMPRESSORS[config.js_compressor.to_sym]
|
389
415
|
else
|
390
416
|
Crush.register_js
|
391
|
-
Tilt[
|
417
|
+
Tilt['js']
|
392
418
|
end
|
393
419
|
end
|
394
420
|
|
@@ -403,7 +429,7 @@ module Machined
|
|
403
429
|
CSS_COMPRESSORS[config.css_compressor.to_sym]
|
404
430
|
else
|
405
431
|
Crush.register_css
|
406
|
-
Tilt[
|
432
|
+
Tilt['css']
|
407
433
|
end
|
408
434
|
end
|
409
435
|
end
|
@@ -6,11 +6,11 @@ module Machined
|
|
6
6
|
def asset_path(source, options = {})
|
7
7
|
case source
|
8
8
|
when :css
|
9
|
-
path_to_asset options, :dir =>
|
9
|
+
path_to_asset options, :dir => 'stylesheets', :ext => 'css'
|
10
10
|
when :images
|
11
|
-
path_to_asset options, :dir =>
|
11
|
+
path_to_asset options, :dir => 'images'
|
12
12
|
when :js
|
13
|
-
path_to_asset options, :dir =>
|
13
|
+
path_to_asset options, :dir => 'javascripts', :ext => 'js'
|
14
14
|
else
|
15
15
|
path_to_asset source, options
|
16
16
|
end
|
@@ -18,7 +18,7 @@ module Machined
|
|
18
18
|
|
19
19
|
# Redefine image_path to work with Sprockets::Helpers.
|
20
20
|
def image_path(source, options = {})
|
21
|
-
asset_path source, { :dir =>
|
21
|
+
asset_path source, { :dir => 'images' }.merge(options)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -1,23 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require "tilt"
|
1
|
+
require 'tilt'
|
3
2
|
|
4
3
|
# We need to ensure that Tilt's ERB template uses
|
5
4
|
# the same output variable that Padrino's helpers expect.
|
6
|
-
Tilt::ERBTemplate.default_output_variable =
|
5
|
+
Tilt::ERBTemplate.default_output_variable = '@_out_buf'
|
7
6
|
|
8
7
|
module Machined
|
9
8
|
module Helpers
|
10
9
|
module OutputHelpers
|
11
|
-
extend ActiveSupport::Memoizable
|
12
|
-
|
13
10
|
# A hash of Tilt templates that support
|
14
11
|
# capture blocks where the key is the name
|
15
12
|
# of the template.
|
16
13
|
CAPTURE_ENGINES = {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
'Tilt::HamlTemplate' => :haml,
|
15
|
+
'Tilt::ERBTemplate' => :erb,
|
16
|
+
'Tilt::ErubisTemplate' => :erubis,
|
17
|
+
'Slim::Template' => :slim
|
21
18
|
}
|
22
19
|
|
23
20
|
protected
|
@@ -27,15 +24,18 @@ module Machined
|
|
27
24
|
# Padrino's helpers to determine which type of template
|
28
25
|
# engine to use when capturing blocks.
|
29
26
|
def current_engine
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
unless defined?(@current_engine)
|
28
|
+
processors = environment.attributes_for(self.pathname).processors
|
29
|
+
processors.each do |processor|
|
30
|
+
if engine = CAPTURE_ENGINES[processor.to_s]
|
31
|
+
@current_engine = engine
|
32
|
+
break
|
33
|
+
end
|
34
|
+
end
|
34
35
|
end
|
35
36
|
|
36
|
-
|
37
|
+
@current_engine
|
37
38
|
end
|
38
|
-
memoize :current_engine
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|