stasis 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -1
- data/Gemfile +3 -0
- data/Rakefile +3 -88
- data/bin/stasis +1 -1
- data/lib/stasis.rb +10 -13
- data/lib/stasis/dev_mode.rb +2 -2
- data/lib/stasis/plugins/layout.rb +15 -3
- data/lib/stasis/server.rb +5 -1
- data/spec/fixtures/project/controller.rb +2 -0
- data/spec/fixtures/project/css.css.scss +1 -0
- data/spec/fixtures/project/erb.html.erb +1 -0
- data/spec/fixtures/project/layout.html.erb +2 -0
- data/spec/spec_helper.rb +6 -6
- data/spec/stasis/plugins/layout_spec.rb +6 -0
- data/stasis.gemspec +19 -20
- metadata +150 -89
- data/config/gemsets.yml +0 -9
- data/config/gemspec.yml +0 -17
- data/lib/stasis/gems.rb +0 -154
- data/spec/fixtures/gemsets.yml +0 -9
- data/spec/fixtures/gemspec.yml +0 -15
- data/spec/stasis/gems_spec.rb +0 -249
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/Rakefile
CHANGED
@@ -1,94 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler'
|
2
|
+
require 'bundler/gem_tasks'
|
2
3
|
|
3
|
-
|
4
|
+
Bundler.setup(:development)
|
4
5
|
|
5
|
-
require 'rake'
|
6
6
|
require 'rocco/tasks'
|
7
|
-
require 'spec/rake/spectask'
|
8
|
-
|
9
|
-
def gemspec
|
10
|
-
@gemspec ||= begin
|
11
|
-
file = File.expand_path('../stasis.gemspec', __FILE__)
|
12
|
-
eval(File.read(file), binding, file)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
if defined?(Spec::Rake::SpecTask)
|
17
|
-
desc "Run specs"
|
18
|
-
Spec::Rake::SpecTask.new do |t|
|
19
|
-
t.spec_files = FileList['spec/**/*_spec.rb']
|
20
|
-
t.spec_opts = %w(-fs --color)
|
21
|
-
t.warning = true
|
22
|
-
end
|
23
|
-
task :spec
|
24
|
-
task :default => :spec
|
25
|
-
end
|
26
|
-
|
27
|
-
desc "Build gem(s)"
|
28
|
-
task :gem do
|
29
|
-
old_gemset = ENV['GEMSET']
|
30
|
-
root = File.expand_path('../', __FILE__)
|
31
|
-
pkg = "#{root}/pkg"
|
32
|
-
system "rm -Rf #{pkg}"
|
33
|
-
Stasis::Gems.gemset_names.each do |gemset|
|
34
|
-
ENV['GEMSET'] = gemset.to_s
|
35
|
-
system "cd #{root} && gem build stasis.gemspec"
|
36
|
-
system "mkdir -p #{pkg} && mv *.gem pkg"
|
37
|
-
end
|
38
|
-
ENV['GEMSET'] = old_gemset
|
39
|
-
end
|
40
|
-
|
41
|
-
namespace :gem do
|
42
|
-
desc "Install gem(s)"
|
43
|
-
task :install do
|
44
|
-
Rake::Task['gem'].invoke
|
45
|
-
Dir["#{File.dirname(__FILE__)}/pkg/*.gem"].each do |pkg|
|
46
|
-
system "gem install #{pkg} --no-ri --no-rdoc"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
desc "Push gem(s)"
|
51
|
-
task :push do
|
52
|
-
Rake::Task['gem'].invoke
|
53
|
-
Dir["#{File.dirname(__FILE__)}/pkg/*.gem"].each do |pkg|
|
54
|
-
system "gem push #{pkg}"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
namespace :gems do
|
60
|
-
desc "Install gem dependencies (DEV=0 DOCS=0 GEMSPEC=default SUDO=0)"
|
61
|
-
task :install do
|
62
|
-
dev = ENV['DEV'] == '1'
|
63
|
-
docs = ENV['DOCS'] == '1' ? '' : '--no-ri --no-rdoc'
|
64
|
-
gemset = ENV['GEMSET']
|
65
|
-
sudo = ENV['SUDO'] == '1' ? 'sudo' : ''
|
66
|
-
|
67
|
-
Stasis::Gems.gemset = gemset if gemset
|
68
|
-
|
69
|
-
if dev
|
70
|
-
gems = Stasis::Gems.gemspec.development_dependencies
|
71
|
-
else
|
72
|
-
gems = Stasis::Gems.gemspec.dependencies
|
73
|
-
end
|
74
|
-
|
75
|
-
gems.each do |name|
|
76
|
-
name = name.to_s
|
77
|
-
version = Stasis::Gems.versions[name]
|
78
|
-
if Gem.source_index.find_name(name, version).empty?
|
79
|
-
version = version ? "-v #{version}" : ''
|
80
|
-
system "#{sudo} gem install #{name} #{version} #{docs}"
|
81
|
-
else
|
82
|
-
puts "already installed: #{name} #{version}"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
desc "Validate the gemspec"
|
89
|
-
task :gemspec do
|
90
|
-
gemspec.validate
|
91
|
-
end
|
92
7
|
|
93
8
|
desc "Build web site"
|
94
9
|
task :site do
|
data/bin/stasis
CHANGED
data/lib/stasis.rb
CHANGED
@@ -3,12 +3,7 @@
|
|
3
3
|
### Prerequisites
|
4
4
|
|
5
5
|
require 'fileutils'
|
6
|
-
|
7
|
-
# `Stasis::Gems` handles loading of rubygems and gems listed in [config/gemsets.yml][ge].
|
8
|
-
#
|
9
|
-
# [ge]: https://github.com/winton/stasis/blob/master/config/gemsets.yml
|
10
|
-
|
11
|
-
require File.dirname(__FILE__) + '/stasis/gems'
|
6
|
+
require 'rubygems'
|
12
7
|
|
13
8
|
# [Slim][sl] ships with its own [Tilt][ti] integration. If the user has [Slim][sl]
|
14
9
|
# installed, require it, otherwise don't worry about it.
|
@@ -23,7 +18,7 @@ end
|
|
23
18
|
|
24
19
|
# Activate the [Tilt][ti] gem.
|
25
20
|
|
26
|
-
|
21
|
+
gem "tilt", "~> 1.3"
|
27
22
|
|
28
23
|
# Add the project directory to the load paths.
|
29
24
|
|
@@ -147,15 +142,15 @@ class Stasis
|
|
147
142
|
# If `only` parameters given...
|
148
143
|
unless only.empty?
|
149
144
|
# Skip iteration unless there is a match.
|
150
|
-
next unless only.any? do |
|
145
|
+
next unless only.any? do |o|
|
151
146
|
# Regular expression match.
|
152
|
-
(
|
147
|
+
(o.is_a?(::Regexp) && @path =~ o) ||
|
153
148
|
(
|
154
|
-
|
149
|
+
o.is_a?(::String) && (
|
155
150
|
# File match.
|
156
|
-
@path ==
|
151
|
+
@path == o ||
|
157
152
|
# Directory match.
|
158
|
-
@path[0..
|
153
|
+
@path[0..o.length-1] == o
|
159
154
|
)
|
160
155
|
)
|
161
156
|
end
|
@@ -223,7 +218,9 @@ class Stasis
|
|
223
218
|
end
|
224
219
|
|
225
220
|
# Create the directories leading up to the destination.
|
226
|
-
|
221
|
+
if render_options[:write] != false
|
222
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
223
|
+
end
|
227
224
|
|
228
225
|
# If markup was rendered...
|
229
226
|
if view
|
data/lib/stasis/dev_mode.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
gem "directory_watcher", "~> 1.4.0"
|
2
2
|
require 'directory_watcher'
|
3
3
|
|
4
4
|
class Stasis
|
@@ -43,7 +43,7 @@ class Stasis
|
|
43
43
|
puts "\n[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] Regenerating #{@options[:only] ? @options[:only].join(', ') : 'project'}..."
|
44
44
|
begin
|
45
45
|
@stasis = Stasis.new(*[ @dir, @options[:public], @options ].compact)
|
46
|
-
@stasis.render(
|
46
|
+
@stasis.render(*[ @options[:only] ].flatten.compact)
|
47
47
|
rescue Exception => e
|
48
48
|
puts "\n[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] Error: #{e.message}`"
|
49
49
|
puts "\t#{e.backtrace.join("\n\t")}"
|
@@ -15,8 +15,20 @@ class Stasis
|
|
15
15
|
def before_render
|
16
16
|
@stasis.action._layout = nil
|
17
17
|
matches = _match_key?(@layouts, @stasis.path)
|
18
|
-
|
19
|
-
|
18
|
+
# Find matching layout with same extension.
|
19
|
+
matches.each do |(within, layout, non_specific)|
|
20
|
+
if _within?(within) && File.extname(layout) == File.extname(@stasis.path)
|
21
|
+
@stasis.action._layout = layout
|
22
|
+
end
|
23
|
+
end
|
24
|
+
# If layout not found, try again without extension requirement for specific layout
|
25
|
+
# definitions only.
|
26
|
+
unless @stasis.action._layout
|
27
|
+
matches.each do |(within, layout, non_specific)|
|
28
|
+
if _within?(within) && !non_specific
|
29
|
+
@stasis.action._layout = layout
|
30
|
+
end
|
31
|
+
end
|
20
32
|
end
|
21
33
|
end
|
22
34
|
|
@@ -41,7 +53,7 @@ class Stasis
|
|
41
53
|
path = @stasis.controller._resolve(path)
|
42
54
|
layout = @stasis.controller._resolve(layout)
|
43
55
|
if layout
|
44
|
-
hash[path] = [ @stasis.path, layout ]
|
56
|
+
hash[path] = [ @stasis.path, layout, path == /.*/ ]
|
45
57
|
@stasis.controller.ignore(layout)
|
46
58
|
end
|
47
59
|
hash
|
data/lib/stasis/server.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
gem "redis", "~> 2.2.1"
|
2
|
+
gem "yajl-ruby", "~> 0.8.2"
|
2
3
|
|
3
4
|
require 'digest/sha1'
|
4
5
|
require 'redis'
|
@@ -12,6 +13,7 @@ class Stasis
|
|
12
13
|
|
13
14
|
redis = Redis.connect(:url => "redis://#{options[:server]}")
|
14
15
|
stasis = Stasis.new(*[ root, options[:public], options ].compact)
|
16
|
+
retries = 0
|
15
17
|
|
16
18
|
begin
|
17
19
|
while true
|
@@ -65,6 +67,8 @@ class Stasis
|
|
65
67
|
rescue Exception => e
|
66
68
|
puts "\nError: #{e.message}"
|
67
69
|
puts "\t#{e.backtrace.join("\n\t")}"
|
70
|
+
retries += 1
|
71
|
+
shut_down if retries >= 10
|
68
72
|
retry
|
69
73
|
end
|
70
74
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
body { background: red }
|
@@ -0,0 +1 @@
|
|
1
|
+
erb template
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "pp"
|
2
|
+
require "bundler"
|
2
3
|
|
3
|
-
|
4
|
-
require
|
5
|
-
|
6
|
-
Stasis::Gems.activate :rspec
|
4
|
+
Bundler.setup(:default)
|
5
|
+
Bundler.require(:development)
|
7
6
|
|
7
|
+
$root = File.expand_path('../../', __FILE__)
|
8
8
|
require "#{$root}/lib/stasis"
|
9
9
|
|
10
10
|
def generate(options={})
|
@@ -12,7 +12,7 @@ def generate(options={})
|
|
12
12
|
$fixture = "#{$root}/spec/fixtures/project"
|
13
13
|
unless $files
|
14
14
|
$stasis ||= Stasis.new($fixture)
|
15
|
-
$stasis.render(*options[:only])
|
15
|
+
$stasis.render(*[ options[:only] ].flatten.compact)
|
16
16
|
generate_files
|
17
17
|
end
|
18
18
|
end
|
@@ -19,4 +19,10 @@ describe Stasis::Layout do
|
|
19
19
|
$files['subdirectory/layout_controller.html'].should =~ /layout\nsubdirectory\npass/
|
20
20
|
$files['subdirectory/layout_controller_from_root.html'].should =~ /layout\nroot\npass/
|
21
21
|
end
|
22
|
+
|
23
|
+
it "should use layouts on matching extensions" do
|
24
|
+
$files['erb.html'].should =~ /erb layout/
|
25
|
+
$files['erb.html'].should =~ /erb template/
|
26
|
+
$files['css.css'].should_not =~ /erb layout/
|
27
|
+
end
|
22
28
|
end
|
data/stasis.gemspec
CHANGED
@@ -1,32 +1,31 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
root = File.expand_path('../', __FILE__)
|
3
3
|
lib = "#{root}/lib"
|
4
|
+
|
4
5
|
$:.unshift lib unless $:.include?(lib)
|
5
|
-
|
6
|
-
require 'stasis/gems'
|
7
|
-
Stasis::Gems.gemset ||= ENV['GEMSET'] || :default
|
8
6
|
|
9
7
|
Gem::Specification.new do |s|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
Stasis::Gems.dependencies.each do |g|
|
21
|
-
s.add_dependency g.to_s, Stasis::Gems.versions[g]
|
22
|
-
end
|
23
|
-
|
24
|
-
Stasis::Gems.development_dependencies.each do |g|
|
25
|
-
s.add_development_dependency g.to_s, Stasis::Gems.versions[g]
|
26
|
-
end
|
8
|
+
s.name = "stasis"
|
9
|
+
s.version = '0.1.11'
|
10
|
+
s.platform = Gem::Platform::RUBY
|
11
|
+
s.authors = [ 'Winton Welsh' ]
|
12
|
+
s.email = [ 'mail@wintoni.us' ]
|
13
|
+
s.homepage = "http://stasis.me"
|
14
|
+
s.summary = %q{Static sites made powerful}
|
15
|
+
s.description = %q{Stasis is a dynamic framework for static sites.}
|
27
16
|
|
28
17
|
s.executables = `cd #{root} && git ls-files bin/*`.split("\n").collect { |f| File.basename(f) }
|
29
18
|
s.files = `cd #{root} && git ls-files`.split("\n")
|
30
19
|
s.require_paths = %w(lib)
|
31
20
|
s.test_files = `cd #{root} && git ls-files -- {features,test,spec}/*`.split("\n")
|
21
|
+
|
22
|
+
s.add_development_dependency "haml"
|
23
|
+
s.add_development_dependency "rocco"
|
24
|
+
s.add_development_dependency "rspec", "~> 1.0"
|
25
|
+
|
26
|
+
s.add_dependency "directory_watcher", "~> 1.4.0"
|
27
|
+
s.add_dependency "redis", "~> 2.2.1"
|
28
|
+
s.add_dependency "slop", "~> 2.1.0"
|
29
|
+
s.add_dependency "tilt", "~> 1.3"
|
30
|
+
s.add_dependency "yajl-ruby", "~> 0.8.2"
|
32
31
|
end
|
metadata
CHANGED
@@ -1,110 +1,162 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: stasis
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 11
|
10
|
+
version: 0.1.11
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Winton Welsh
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
date: 2011-10-10 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
22
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
22
|
-
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 3
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
requirement: *id001
|
23
31
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
32
|
+
name: haml
|
33
|
+
type: :development
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
28
36
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
33
|
-
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
hash: 3
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
requirement: *id002
|
34
45
|
prerelease: false
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
46
|
+
name: rocco
|
47
|
+
type: :development
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
|
-
requirements:
|
51
|
+
requirements:
|
41
52
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 15
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 0
|
58
|
+
version: "1.0"
|
59
|
+
requirement: *id003
|
45
60
|
prerelease: false
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
61
|
+
name: rspec
|
62
|
+
type: :development
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
|
-
requirements:
|
66
|
+
requirements:
|
52
67
|
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 7
|
70
|
+
segments:
|
71
|
+
- 1
|
72
|
+
- 4
|
73
|
+
- 0
|
74
|
+
version: 1.4.0
|
75
|
+
requirement: *id004
|
56
76
|
prerelease: false
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
77
|
+
name: directory_watcher
|
78
|
+
type: :runtime
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
|
-
requirements:
|
82
|
+
requirements:
|
63
83
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 5
|
86
|
+
segments:
|
87
|
+
- 2
|
88
|
+
- 2
|
89
|
+
- 1
|
90
|
+
version: 2.2.1
|
91
|
+
requirement: *id005
|
92
|
+
prerelease: false
|
93
|
+
name: redis
|
66
94
|
type: :runtime
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
hash: 11
|
102
|
+
segments:
|
103
|
+
- 2
|
104
|
+
- 1
|
105
|
+
- 0
|
106
|
+
version: 2.1.0
|
107
|
+
requirement: *id006
|
67
108
|
prerelease: false
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
109
|
+
name: slop
|
110
|
+
type: :runtime
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
72
113
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
hash: 9
|
118
|
+
segments:
|
119
|
+
- 1
|
120
|
+
- 3
|
121
|
+
version: "1.3"
|
122
|
+
requirement: *id007
|
78
123
|
prerelease: false
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
124
|
+
name: tilt
|
125
|
+
type: :runtime
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
83
128
|
none: false
|
84
|
-
requirements:
|
129
|
+
requirements:
|
85
130
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
hash: 59
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
- 8
|
136
|
+
- 2
|
137
|
+
version: 0.8.2
|
138
|
+
requirement: *id008
|
89
139
|
prerelease: false
|
90
|
-
|
140
|
+
name: yajl-ruby
|
141
|
+
type: :runtime
|
91
142
|
description: Stasis is a dynamic framework for static sites.
|
92
|
-
email:
|
93
|
-
|
143
|
+
email:
|
144
|
+
- mail@wintoni.us
|
145
|
+
executables:
|
94
146
|
- stasis
|
95
147
|
extensions: []
|
148
|
+
|
96
149
|
extra_rdoc_files: []
|
97
|
-
|
150
|
+
|
151
|
+
files:
|
98
152
|
- .gitignore
|
153
|
+
- Gemfile
|
99
154
|
- LICENSE
|
100
155
|
- README.md
|
101
156
|
- Rakefile
|
102
157
|
- bin/stasis
|
103
|
-
- config/gemsets.yml
|
104
|
-
- config/gemspec.yml
|
105
158
|
- lib/stasis.rb
|
106
159
|
- lib/stasis/dev_mode.rb
|
107
|
-
- lib/stasis/gems.rb
|
108
160
|
- lib/stasis/options.rb
|
109
161
|
- lib/stasis/plugin.rb
|
110
162
|
- lib/stasis/plugins/before.rb
|
@@ -126,13 +178,14 @@ files:
|
|
126
178
|
- site/stasis.css.scss
|
127
179
|
- site/stasis.js.coffee
|
128
180
|
- site/stasis.png
|
129
|
-
- spec/fixtures/gemsets.yml
|
130
|
-
- spec/fixtures/gemspec.yml
|
131
181
|
- spec/fixtures/project/_partial.html.haml
|
132
182
|
- spec/fixtures/project/before_render_partial.html.haml
|
133
183
|
- spec/fixtures/project/before_render_text.html.haml
|
134
184
|
- spec/fixtures/project/controller.rb
|
185
|
+
- spec/fixtures/project/css.css.scss
|
186
|
+
- spec/fixtures/project/erb.html.erb
|
135
187
|
- spec/fixtures/project/index.html.haml
|
188
|
+
- spec/fixtures/project/layout.html.erb
|
136
189
|
- spec/fixtures/project/layout.html.haml
|
137
190
|
- spec/fixtures/project/layout_action.html.haml
|
138
191
|
- spec/fixtures/project/layout_action_from_subdirectory.html.haml
|
@@ -155,7 +208,6 @@ files:
|
|
155
208
|
- spec/fixtures/project/subdirectory/layout_controller_from_root.html.haml
|
156
209
|
- spec/fixtures/project/time.html.haml
|
157
210
|
- spec/spec_helper.rb
|
158
|
-
- spec/stasis/gems_spec.rb
|
159
211
|
- spec/stasis/plugins/before_spec.rb
|
160
212
|
- spec/stasis/plugins/helpers_spec.rb
|
161
213
|
- spec/stasis/plugins/ignore_spec.rb
|
@@ -167,36 +219,46 @@ files:
|
|
167
219
|
- stasis.gemspec
|
168
220
|
homepage: http://stasis.me
|
169
221
|
licenses: []
|
222
|
+
|
170
223
|
post_install_message:
|
171
224
|
rdoc_options: []
|
172
|
-
|
225
|
+
|
226
|
+
require_paths:
|
173
227
|
- lib
|
174
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
228
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
175
229
|
none: false
|
176
|
-
requirements:
|
177
|
-
- -
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
|
180
|
-
|
230
|
+
requirements:
|
231
|
+
- - ">="
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
hash: 3
|
234
|
+
segments:
|
235
|
+
- 0
|
236
|
+
version: "0"
|
237
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
238
|
none: false
|
182
|
-
requirements:
|
183
|
-
- -
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
hash: 3
|
243
|
+
segments:
|
244
|
+
- 0
|
245
|
+
version: "0"
|
186
246
|
requirements: []
|
247
|
+
|
187
248
|
rubyforge_project:
|
188
|
-
rubygems_version: 1.8.
|
249
|
+
rubygems_version: 1.8.10
|
189
250
|
signing_key:
|
190
251
|
specification_version: 3
|
191
252
|
summary: Static sites made powerful
|
192
|
-
test_files:
|
193
|
-
- spec/fixtures/gemsets.yml
|
194
|
-
- spec/fixtures/gemspec.yml
|
253
|
+
test_files:
|
195
254
|
- spec/fixtures/project/_partial.html.haml
|
196
255
|
- spec/fixtures/project/before_render_partial.html.haml
|
197
256
|
- spec/fixtures/project/before_render_text.html.haml
|
198
257
|
- spec/fixtures/project/controller.rb
|
258
|
+
- spec/fixtures/project/css.css.scss
|
259
|
+
- spec/fixtures/project/erb.html.erb
|
199
260
|
- spec/fixtures/project/index.html.haml
|
261
|
+
- spec/fixtures/project/layout.html.erb
|
200
262
|
- spec/fixtures/project/layout.html.haml
|
201
263
|
- spec/fixtures/project/layout_action.html.haml
|
202
264
|
- spec/fixtures/project/layout_action_from_subdirectory.html.haml
|
@@ -219,7 +281,6 @@ test_files:
|
|
219
281
|
- spec/fixtures/project/subdirectory/layout_controller_from_root.html.haml
|
220
282
|
- spec/fixtures/project/time.html.haml
|
221
283
|
- spec/spec_helper.rb
|
222
|
-
- spec/stasis/gems_spec.rb
|
223
284
|
- spec/stasis/plugins/before_spec.rb
|
224
285
|
- spec/stasis/plugins/helpers_spec.rb
|
225
286
|
- spec/stasis/plugins/ignore_spec.rb
|
data/config/gemsets.yml
DELETED
data/config/gemspec.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
name: stasis
|
2
|
-
version: 0.1.10
|
3
|
-
authors:
|
4
|
-
- Winton Welsh
|
5
|
-
email: mail@wintoni.us
|
6
|
-
homepage: http://stasis.me
|
7
|
-
summary: Static sites made powerful
|
8
|
-
description: Stasis is a dynamic framework for static sites.
|
9
|
-
dependencies:
|
10
|
-
- directory_watcher
|
11
|
-
- redis
|
12
|
-
- slop
|
13
|
-
- tilt
|
14
|
-
- yajl-ruby
|
15
|
-
development_dependencies:
|
16
|
-
- rake
|
17
|
-
- rspec
|
data/lib/stasis/gems.rb
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
unless defined?(Stasis::Gems)
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
|
5
|
-
class Stasis
|
6
|
-
module Gems
|
7
|
-
class <<self
|
8
|
-
|
9
|
-
attr_accessor :config
|
10
|
-
attr_reader :gemset, :gemsets, :versions
|
11
|
-
|
12
|
-
class SimpleStruct
|
13
|
-
attr_reader :hash
|
14
|
-
|
15
|
-
def initialize(hash)
|
16
|
-
@hash = hash
|
17
|
-
@hash.each do |key, value|
|
18
|
-
self.class.send(:define_method, key) { @hash[key] }
|
19
|
-
self.class.send(:define_method, "#{key}=") { |v| @hash[key] = v }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Gems.config = SimpleStruct.new(
|
25
|
-
:gemsets => [ "#{File.expand_path('../../../', __FILE__)}/config/gemsets.yml" ],
|
26
|
-
:gemspec => "#{File.expand_path('../../../', __FILE__)}/config/gemspec.yml",
|
27
|
-
:warn => true
|
28
|
-
)
|
29
|
-
|
30
|
-
def activate(*gems)
|
31
|
-
begin
|
32
|
-
require 'rubygems' unless defined?(::Gem)
|
33
|
-
rescue LoadError
|
34
|
-
puts "rubygems library could not be required" if @config.warn
|
35
|
-
end
|
36
|
-
|
37
|
-
self.gemset ||= gemset_from_loaded_specs
|
38
|
-
|
39
|
-
gems.flatten.collect { |g| g.to_sym }.each do |name|
|
40
|
-
version = @versions[name]
|
41
|
-
vendor = File.expand_path("../../../vendor/#{name}/lib", __FILE__)
|
42
|
-
if File.exists?(vendor)
|
43
|
-
$:.unshift vendor
|
44
|
-
elsif defined?(gem)
|
45
|
-
gem name.to_s, version
|
46
|
-
else
|
47
|
-
puts "#{name} #{"(#{version})" if version} failed to activate" if @config.warn
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def dependencies
|
53
|
-
dependency_filter(@gemspec.dependencies, @gemset)
|
54
|
-
end
|
55
|
-
|
56
|
-
def development_dependencies
|
57
|
-
dependency_filter(@gemspec.development_dependencies, @gemset)
|
58
|
-
end
|
59
|
-
|
60
|
-
def gemset=(gemset)
|
61
|
-
if gemset
|
62
|
-
@gemset = gemset.to_sym
|
63
|
-
|
64
|
-
@gemsets = @config.gemsets.reverse.collect { |config|
|
65
|
-
if config.is_a?(::String)
|
66
|
-
YAML::load(File.read(config)) rescue {}
|
67
|
-
elsif config.is_a?(::Hash)
|
68
|
-
config
|
69
|
-
end
|
70
|
-
}.inject({}) do |hash, config|
|
71
|
-
deep_merge(hash, symbolize_keys(config))
|
72
|
-
end
|
73
|
-
|
74
|
-
@versions = (@gemsets[gemspec.name.to_sym] || {}).inject({}) do |hash, (key, value)|
|
75
|
-
if !value.is_a?(::Hash) && value
|
76
|
-
hash[key] = value
|
77
|
-
elsif key == @gemset
|
78
|
-
(value || {}).each { |k, v| hash[k] = v }
|
79
|
-
end
|
80
|
-
hash
|
81
|
-
end
|
82
|
-
else
|
83
|
-
@gemset = nil
|
84
|
-
@gemsets = nil
|
85
|
-
@versions = nil
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def gemset_names
|
90
|
-
(
|
91
|
-
[ :default ] +
|
92
|
-
@gemsets[gemspec.name.to_sym].inject([]) { |array, (key, value)|
|
93
|
-
array.push(key) if value.is_a?(::Hash) || value.nil?
|
94
|
-
array
|
95
|
-
}
|
96
|
-
).uniq
|
97
|
-
end
|
98
|
-
|
99
|
-
def gemspec(reload=false)
|
100
|
-
if @gemspec && !reload
|
101
|
-
@gemspec
|
102
|
-
else
|
103
|
-
data = YAML::load(File.read(@config.gemspec)) rescue {}
|
104
|
-
@gemspec = SimpleStruct.new(data)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
private
|
109
|
-
|
110
|
-
def deep_merge(first, second)
|
111
|
-
merger = lambda do |key, v1, v2|
|
112
|
-
Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2
|
113
|
-
end
|
114
|
-
first.merge(second, &merger)
|
115
|
-
end
|
116
|
-
|
117
|
-
def dependency_filter(dependencies, match)
|
118
|
-
(dependencies || []).inject([]) { |array, value|
|
119
|
-
if value.is_a?(::Hash)
|
120
|
-
array += value[match.to_s] if value[match.to_s]
|
121
|
-
else
|
122
|
-
array << value
|
123
|
-
end
|
124
|
-
array
|
125
|
-
}.uniq.collect(&:to_sym)
|
126
|
-
end
|
127
|
-
|
128
|
-
def gemset_from_loaded_specs
|
129
|
-
if defined?(Gem)
|
130
|
-
Gem.loaded_specs.each do |name, spec|
|
131
|
-
if name == gemspec.name
|
132
|
-
return :default
|
133
|
-
elsif name[0..gemspec.name.length] == "#{gemspec.name}-"
|
134
|
-
return name[gemspec.name.length+1..-1].to_sym
|
135
|
-
end
|
136
|
-
end
|
137
|
-
:default
|
138
|
-
else
|
139
|
-
:none
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def symbolize_keys(hash)
|
144
|
-
return {} unless hash.is_a?(::Hash)
|
145
|
-
hash.inject({}) do |options, (key, value)|
|
146
|
-
value = symbolize_keys(value) if value.is_a?(::Hash)
|
147
|
-
options[(key.to_sym rescue key) || key] = value
|
148
|
-
options
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
data/spec/fixtures/gemsets.yml
DELETED
data/spec/fixtures/gemspec.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
name: name
|
2
|
-
version: 0.1.0
|
3
|
-
authors:
|
4
|
-
- Author
|
5
|
-
email: email@email.com
|
6
|
-
homepage: http://github.com/author/name
|
7
|
-
summary: Summary
|
8
|
-
description: Description
|
9
|
-
dependencies:
|
10
|
-
- rake
|
11
|
-
- default:
|
12
|
-
- mysql
|
13
|
-
- rspec2:
|
14
|
-
- mysql2
|
15
|
-
development_dependencies: null
|
data/spec/stasis/gems_spec.rb
DELETED
@@ -1,249 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Stasis::Gems do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@old_config = Stasis::Gems.config
|
7
|
-
|
8
|
-
Stasis::Gems.config.gemspec = "#{$root}/spec/fixtures/gemspec.yml"
|
9
|
-
Stasis::Gems.config.gemsets = [
|
10
|
-
"#{$root}/spec/fixtures/gemsets.yml"
|
11
|
-
]
|
12
|
-
Stasis::Gems.config.warn = true
|
13
|
-
|
14
|
-
Stasis::Gems.gemspec true
|
15
|
-
Stasis::Gems.gemset = nil
|
16
|
-
end
|
17
|
-
|
18
|
-
after(:each) do
|
19
|
-
Stasis::Gems.config = @old_config
|
20
|
-
end
|
21
|
-
|
22
|
-
describe :activate do
|
23
|
-
it "should activate gems" do
|
24
|
-
Stasis::Gems.stub!(:gem)
|
25
|
-
Stasis::Gems.should_receive(:gem).with('rspec', '=1.3.1')
|
26
|
-
Stasis::Gems.should_receive(:gem).with('rake', '=0.8.7')
|
27
|
-
Stasis::Gems.activate :rspec, 'rake'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe :gemset= do
|
32
|
-
before(:each) do
|
33
|
-
Stasis::Gems.config.gemsets = [
|
34
|
-
{
|
35
|
-
:name => {
|
36
|
-
:rake => '>0.8.6',
|
37
|
-
:default => {
|
38
|
-
:externals => '=1.0.2'
|
39
|
-
}
|
40
|
-
}
|
41
|
-
},
|
42
|
-
"#{$root}/spec/fixtures/gemsets.yml"
|
43
|
-
]
|
44
|
-
end
|
45
|
-
|
46
|
-
describe :default do
|
47
|
-
before(:each) do
|
48
|
-
Stasis::Gems.gemset = :default
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should set @gemset" do
|
52
|
-
Stasis::Gems.gemset.should == :default
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should set @gemsets" do
|
56
|
-
Stasis::Gems.gemsets.should == {
|
57
|
-
:name => {
|
58
|
-
:rake => ">0.8.6",
|
59
|
-
:default => {
|
60
|
-
:externals => '=1.0.2',
|
61
|
-
:mysql => "=2.8.1",
|
62
|
-
:rspec => "=1.3.1"
|
63
|
-
},
|
64
|
-
:rspec2 => {
|
65
|
-
:mysql2 => "=0.2.6",
|
66
|
-
:rspec => "=2.3.0"
|
67
|
-
},
|
68
|
-
:solo => nil
|
69
|
-
}
|
70
|
-
}
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should set Gems.versions" do
|
74
|
-
Stasis::Gems.versions.should == {
|
75
|
-
:externals => "=1.0.2",
|
76
|
-
:mysql => "=2.8.1",
|
77
|
-
:rake => ">0.8.6",
|
78
|
-
:rspec => "=1.3.1"
|
79
|
-
}
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should return proper values for Gems.dependencies" do
|
83
|
-
Stasis::Gems.dependencies.should == [ :rake, :mysql ]
|
84
|
-
Stasis::Gems.development_dependencies.should == []
|
85
|
-
end
|
86
|
-
|
87
|
-
it "should return proper values for Gems.gemset_names" do
|
88
|
-
Stasis::Gems.gemset_names.should == [ :default, :rspec2, :solo ]
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
describe :rspec2 do
|
93
|
-
before(:each) do
|
94
|
-
Stasis::Gems.gemset = "rspec2"
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should set @gemset" do
|
98
|
-
Stasis::Gems.gemset.should == :rspec2
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should set @gemsets" do
|
102
|
-
Stasis::Gems.gemsets.should == {
|
103
|
-
:name => {
|
104
|
-
:rake => ">0.8.6",
|
105
|
-
:default => {
|
106
|
-
:externals => '=1.0.2',
|
107
|
-
:mysql => "=2.8.1",
|
108
|
-
:rspec => "=1.3.1"
|
109
|
-
},
|
110
|
-
:rspec2 => {
|
111
|
-
:mysql2=>"=0.2.6",
|
112
|
-
:rspec => "=2.3.0"
|
113
|
-
},
|
114
|
-
:solo => nil
|
115
|
-
}
|
116
|
-
}
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should set Gems.versions" do
|
120
|
-
Stasis::Gems.versions.should == {
|
121
|
-
:mysql2 => "=0.2.6",
|
122
|
-
:rake => ">0.8.6",
|
123
|
-
:rspec => "=2.3.0"
|
124
|
-
}
|
125
|
-
end
|
126
|
-
|
127
|
-
it "should return proper values for Gems.dependencies" do
|
128
|
-
Stasis::Gems.dependencies.should == [ :rake, :mysql2 ]
|
129
|
-
Stasis::Gems.development_dependencies.should == []
|
130
|
-
end
|
131
|
-
|
132
|
-
it "should return proper values for Gems.gemset_names" do
|
133
|
-
Stasis::Gems.gemset_names.should == [ :default, :rspec2, :solo ]
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
describe :solo do
|
138
|
-
before(:each) do
|
139
|
-
Stasis::Gems.gemset = :solo
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should set @gemset" do
|
143
|
-
Stasis::Gems.gemset.should == :solo
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should set @gemsets" do
|
147
|
-
Stasis::Gems.gemsets.should == {
|
148
|
-
:name => {
|
149
|
-
:rake => ">0.8.6",
|
150
|
-
:default => {
|
151
|
-
:externals => '=1.0.2',
|
152
|
-
:mysql => "=2.8.1",
|
153
|
-
:rspec => "=1.3.1"
|
154
|
-
},
|
155
|
-
:rspec2 => {
|
156
|
-
:mysql2=>"=0.2.6",
|
157
|
-
:rspec => "=2.3.0"
|
158
|
-
},
|
159
|
-
:solo => nil
|
160
|
-
}
|
161
|
-
}
|
162
|
-
end
|
163
|
-
|
164
|
-
it "should set Gems.versions" do
|
165
|
-
Stasis::Gems.versions.should == {:rake=>">0.8.6"}
|
166
|
-
end
|
167
|
-
|
168
|
-
it "should return proper values for Gems.dependencies" do
|
169
|
-
Stasis::Gems.dependencies.should == [:rake]
|
170
|
-
Stasis::Gems.development_dependencies.should == []
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should return proper values for Gems.gemset_names" do
|
174
|
-
Stasis::Gems.gemset_names.should == [ :default, :rspec2, :solo ]
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
describe :nil do
|
179
|
-
before(:each) do
|
180
|
-
Stasis::Gems.gemset = nil
|
181
|
-
end
|
182
|
-
|
183
|
-
it "should set everything to nil" do
|
184
|
-
Stasis::Gems.gemset.should == nil
|
185
|
-
Stasis::Gems.gemsets.should == nil
|
186
|
-
Stasis::Gems.versions.should == nil
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
describe :gemset_from_loaded_specs do
|
192
|
-
before(:each) do
|
193
|
-
Gem.stub!(:loaded_specs)
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should return the correct gemset for name gem" do
|
197
|
-
Gem.should_receive(:loaded_specs).and_return({ "name" => nil })
|
198
|
-
Stasis::Gems.send(:gemset_from_loaded_specs).should == :default
|
199
|
-
end
|
200
|
-
|
201
|
-
it "should return the correct gemset for name-rspec gem" do
|
202
|
-
Gem.should_receive(:loaded_specs).and_return({ "name-rspec2" => nil })
|
203
|
-
Stasis::Gems.send(:gemset_from_loaded_specs).should == :rspec2
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
describe :reload_gemspec do
|
208
|
-
it "should populate @gemspec" do
|
209
|
-
Stasis::Gems.gemspec.hash.should == {
|
210
|
-
"name" => "name",
|
211
|
-
"version" => "0.1.0",
|
212
|
-
"authors" => ["Author"],
|
213
|
-
"email" => "email@email.com",
|
214
|
-
"homepage" => "http://github.com/author/name",
|
215
|
-
"summary" => "Summary",
|
216
|
-
"description" => "Description",
|
217
|
-
"dependencies" => [
|
218
|
-
"rake",
|
219
|
-
{ "default" => [ "mysql" ] },
|
220
|
-
{ "rspec2" => [ "mysql2" ] }
|
221
|
-
],
|
222
|
-
"development_dependencies" => nil
|
223
|
-
}
|
224
|
-
end
|
225
|
-
|
226
|
-
it "should create methods from keys of @gemspec" do
|
227
|
-
Stasis::Gems.gemspec.name.should == "name"
|
228
|
-
Stasis::Gems.gemspec.version.should == "0.1.0"
|
229
|
-
Stasis::Gems.gemspec.authors.should == ["Author"]
|
230
|
-
Stasis::Gems.gemspec.email.should == "email@email.com"
|
231
|
-
Stasis::Gems.gemspec.homepage.should == "http://github.com/author/name"
|
232
|
-
Stasis::Gems.gemspec.summary.should == "Summary"
|
233
|
-
Stasis::Gems.gemspec.description.should == "Description"
|
234
|
-
Stasis::Gems.gemspec.dependencies.should == [
|
235
|
-
"rake",
|
236
|
-
{ "default" => ["mysql"] },
|
237
|
-
{ "rspec2" => [ "mysql2" ] }
|
238
|
-
]
|
239
|
-
Stasis::Gems.gemspec.development_dependencies.should == nil
|
240
|
-
end
|
241
|
-
|
242
|
-
it "should produce a valid gemspec" do
|
243
|
-
Stasis::Gems.gemset = :default
|
244
|
-
gemspec = File.expand_path("../../../stasis.gemspec", __FILE__)
|
245
|
-
gemspec = eval(File.read(gemspec), binding, gemspec)
|
246
|
-
gemspec.validate.should == true
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|