alephant 0.0.3-java → 0.0.4-java
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.
- checksums.yaml +4 -4
- data/.gitignore +6 -2
- data/Guardfile +6 -0
- data/README.md +3 -1
- data/Rakefile +1 -1
- data/alephant.gemspec +3 -0
- data/lib/alephant.rb +4 -0
- data/lib/alephant/errors.rb +6 -0
- data/lib/alephant/errors/invalid_view_path.rb +6 -0
- data/lib/alephant/errors/view_model_not_found.rb +6 -0
- data/lib/alephant/errors/view_template_not_found.rb +6 -0
- data/lib/alephant/models/renderer.rb +39 -12
- data/lib/alephant/util/string.rb +9 -0
- data/lib/alephant/version.rb +1 -1
- data/lib/alephant/views.rb +15 -0
- data/lib/alephant/views/base.rb +16 -0
- data/lib/env.rb +2 -0
- data/spec/fixtures/views/models/example.rb +7 -0
- data/spec/fixtures/views/templates/example.mustache +1 -0
- data/spec/renderer_spec.rb +132 -0
- data/spec/spec_helper.rb +4 -0
- metadata +59 -5
- data/package.py +0 -71
- data/project.json +0 -11
- data/spec/foo_spec.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac3689e07939593c100632167541ecc2efd0994a
|
4
|
+
data.tar.gz: b12b4f8cd17d1a380eabdb1bf44f93ed62628fa0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2094d441612a43e1571817ece377e602f9367f33b7b91cadc003b33a20144cda6938f8f08c207970949efb6dfcd142a684d1bd0cea00ac92b821a65db4077876
|
7
|
+
data.tar.gz: 054fcbe96e00401de0376192925c9278089b386238be2b3bb6c7a44b1085da372620ea1caf4bf081d2be98f142a8446d5d56380e3d7b2fffee46edb55cd8a168
|
data/.gitignore
CHANGED
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
alephant
|
2
2
|
=========
|
3
3
|
|
4
|
+
Static publishing to S3 on push notification from SQS
|
5
|
+
|
4
6
|
[](https://codeclimate.com/repos/52cd866de30ba018f10000a2/feed)
|
5
7
|
|
6
8
|
[](https://travis-ci.org/kenoir/alephant)
|
7
9
|
|
8
|
-
|
10
|
+
[](http://badge.fury.io/rb/alephant)
|
9
11
|
|
10
12
|
##Dependencies
|
11
13
|
|
data/Rakefile
CHANGED
data/alephant.gemspec
CHANGED
@@ -23,6 +23,9 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.add_development_dependency "rake"
|
25
25
|
s.add_development_dependency "rspec"
|
26
|
+
s.add_development_dependency "rspec-nc"
|
27
|
+
s.add_development_dependency "guard"
|
28
|
+
s.add_development_dependency "guard-rspec"
|
26
29
|
s.add_development_dependency "pry"
|
27
30
|
|
28
31
|
s.add_runtime_dependency 'aws-sdk', '~> 1.0'
|
data/lib/alephant.rb
CHANGED
@@ -3,6 +3,8 @@ require 'mustache'
|
|
3
3
|
|
4
4
|
module Alephant
|
5
5
|
class Renderer
|
6
|
+
DEFAULT_LOCATION = 'views'
|
7
|
+
|
6
8
|
attr_reader :id
|
7
9
|
|
8
10
|
def initialize(id)
|
@@ -10,21 +12,46 @@ module Alephant
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def render(data)
|
13
|
-
Mustache.render(
|
15
|
+
Mustache.render(
|
16
|
+
template(@id),
|
17
|
+
model(@id,data)
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def base_path
|
22
|
+
@base_path || DEFAULT_LOCATION
|
23
|
+
end
|
24
|
+
|
25
|
+
def base_path=(path)
|
26
|
+
if File.directory?(path)
|
27
|
+
@base_path = path
|
28
|
+
else
|
29
|
+
raise Errors::InvalidViewPath
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def model(id, data)
|
34
|
+
model_location =
|
35
|
+
File.join(base_path,'models',"#{id}.rb")
|
36
|
+
|
37
|
+
begin
|
38
|
+
require model_location
|
39
|
+
klass = ::Alephant::Views.get_registered_class(id)
|
40
|
+
rescue Exception => e
|
41
|
+
raise Errors::ViewModelNotFound
|
42
|
+
end
|
43
|
+
|
44
|
+
klass.new(data)
|
14
45
|
end
|
15
46
|
|
16
|
-
private
|
17
47
|
def template(id)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
{{/results}}
|
26
|
-
<p>Sequence number: {{seq}}</p>
|
27
|
-
eos
|
48
|
+
template_location =
|
49
|
+
File.join(base_path,'templates',"#{id}.mustache")
|
50
|
+
begin
|
51
|
+
File.open(template_location).read
|
52
|
+
rescue Exception => e
|
53
|
+
raise Errors::ViewTemplateNotFound
|
54
|
+
end
|
28
55
|
end
|
29
56
|
end
|
30
57
|
end
|
data/lib/alephant/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Alephant::Views
|
2
|
+
autoload :Base, 'alephant/views/base'
|
3
|
+
|
4
|
+
@@views = {}
|
5
|
+
|
6
|
+
def self.register(klass)
|
7
|
+
id = klass.name.split('::').last
|
8
|
+
@@views[id.underscore] = klass
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.get_registered_class(id)
|
12
|
+
@@views[id]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
data/lib/env.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{{content}}
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Alephant::Renderer do
|
4
|
+
let(:id) { :id }
|
5
|
+
subject { Alephant::Renderer }
|
6
|
+
|
7
|
+
describe "id=" do
|
8
|
+
it "sets the attribute id" do
|
9
|
+
expect(subject.new(id).id).to eq(id)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "template(id)" do
|
14
|
+
let(:id) { 'example' }
|
15
|
+
it "returns the template" do
|
16
|
+
instance = subject.new(id)
|
17
|
+
instance.base_path = File.join(
|
18
|
+
File.dirname(__FILE__),
|
19
|
+
'fixtures',
|
20
|
+
'views'
|
21
|
+
)
|
22
|
+
|
23
|
+
template = instance.template(id)
|
24
|
+
expect(template).to eq("{{content}}\n")
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'invalid template' do
|
28
|
+
let(:id) { 'invalid_example' }
|
29
|
+
it 'should raise ViewTemplateNotFound' do
|
30
|
+
instance = subject.new(id)
|
31
|
+
instance.base_path = File.join(
|
32
|
+
File.dirname(__FILE__),
|
33
|
+
'fixtures',
|
34
|
+
'views'
|
35
|
+
)
|
36
|
+
|
37
|
+
expect {
|
38
|
+
instance.template(id)
|
39
|
+
}.to raise_error(
|
40
|
+
Alephant::Errors::ViewTemplateNotFound
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "model(id, data)" do
|
47
|
+
let(:id) { 'example' }
|
48
|
+
let(:data) { { :key => :value } }
|
49
|
+
it "returns the model" do
|
50
|
+
instance = subject.new(id)
|
51
|
+
instance.base_path = File.join(
|
52
|
+
File.dirname(__FILE__),
|
53
|
+
'fixtures',
|
54
|
+
'views'
|
55
|
+
)
|
56
|
+
|
57
|
+
model = instance.model(id, data)
|
58
|
+
model.should be_an Alephant::Views::Base
|
59
|
+
expect(model.data).to eq(data)
|
60
|
+
end
|
61
|
+
|
62
|
+
context "invalid model" do
|
63
|
+
let(:id) { 'invalid_example' }
|
64
|
+
it 'should raise ViewModelNotFound' do
|
65
|
+
instance = subject.new(id)
|
66
|
+
instance.base_path = File.join(
|
67
|
+
File.dirname(__FILE__),
|
68
|
+
'fixtures',
|
69
|
+
'views'
|
70
|
+
)
|
71
|
+
expect {
|
72
|
+
instance.model(id, data)
|
73
|
+
}.to raise_error(
|
74
|
+
Alephant::Errors::ViewModelNotFound
|
75
|
+
)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "base_path" do
|
81
|
+
it "should return DEFAULT_LOCATION" do
|
82
|
+
expect(subject.new(id).base_path).to eq(
|
83
|
+
Alephant::Renderer::DEFAULT_LOCATION
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
context "base_path = '.'" do
|
88
|
+
let(:base_path) { '.' }
|
89
|
+
it "should return '.'" do
|
90
|
+
instance = subject.new(id)
|
91
|
+
instance.base_path = base_path
|
92
|
+
expect(instance.base_path).to eq(base_path)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "base_path=(path)" do
|
98
|
+
context "base_path = valid_path" do
|
99
|
+
let(:valid_path) {'.'}
|
100
|
+
it "should set the base_path" do
|
101
|
+
instance = subject.new(id)
|
102
|
+
instance.base_path = valid_path
|
103
|
+
expect(instance.base_path).to eq(valid_path)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "base_path = invalid_path" do
|
108
|
+
let(:invalid_path) {'./invalid_path'}
|
109
|
+
it "should raise InvalidViewPath" do
|
110
|
+
instance = subject.new(id)
|
111
|
+
expect {
|
112
|
+
instance.base_path = invalid_path
|
113
|
+
}.to raise_error(
|
114
|
+
Alephant::Errors::InvalidViewPath
|
115
|
+
)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "render(data)" do
|
121
|
+
it 'renders a template returned from template(id)' do
|
122
|
+
Mustache.any_instance.stub(:render)
|
123
|
+
.with(:template, :model).and_return(:content)
|
124
|
+
Alephant::Renderer.any_instance.stub(:template)
|
125
|
+
.with(id).and_return(:template)
|
126
|
+
Alephant::Renderer.any_instance.stub(:model)
|
127
|
+
.with(id, :data).and_return(:model)
|
128
|
+
|
129
|
+
expect(subject.new(id).render(:data)).to eq(:content)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Robert Kenny
|
@@ -38,6 +38,48 @@ dependencies:
|
|
38
38
|
version: '0'
|
39
39
|
prerelease: false
|
40
40
|
type: :development
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-nc
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
prerelease: false
|
54
|
+
type: :development
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
prerelease: false
|
68
|
+
type: :development
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
prerelease: false
|
82
|
+
type: :development
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
84
|
name: pry
|
43
85
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,19 +132,28 @@ files:
|
|
90
132
|
- .ruby-version
|
91
133
|
- .travis.yml
|
92
134
|
- Gemfile
|
135
|
+
- Guardfile
|
93
136
|
- LICENSE
|
94
137
|
- README.md
|
95
138
|
- Rakefile
|
96
139
|
- alephant.gemspec
|
97
140
|
- lib/alephant.rb
|
141
|
+
- lib/alephant/errors.rb
|
142
|
+
- lib/alephant/errors/invalid_view_path.rb
|
143
|
+
- lib/alephant/errors/view_model_not_found.rb
|
144
|
+
- lib/alephant/errors/view_template_not_found.rb
|
98
145
|
- lib/alephant/models/cache.rb
|
99
146
|
- lib/alephant/models/renderer.rb
|
100
147
|
- lib/alephant/models/sequencer.rb
|
148
|
+
- lib/alephant/util/string.rb
|
101
149
|
- lib/alephant/version.rb
|
150
|
+
- lib/alephant/views.rb
|
151
|
+
- lib/alephant/views/base.rb
|
102
152
|
- lib/env.rb
|
103
|
-
-
|
104
|
-
-
|
105
|
-
- spec/
|
153
|
+
- spec/fixtures/views/models/example.rb
|
154
|
+
- spec/fixtures/views/templates/example.mustache
|
155
|
+
- spec/renderer_spec.rb
|
156
|
+
- spec/spec_helper.rb
|
106
157
|
homepage: http://rubygems.org/gems/alephant
|
107
158
|
licenses:
|
108
159
|
- GPLv3
|
@@ -128,4 +179,7 @@ signing_key:
|
|
128
179
|
specification_version: 4
|
129
180
|
summary: Static Publishing in the Cloud
|
130
181
|
test_files:
|
131
|
-
- spec/
|
182
|
+
- spec/fixtures/views/models/example.rb
|
183
|
+
- spec/fixtures/views/templates/example.mustache
|
184
|
+
- spec/renderer_spec.rb
|
185
|
+
- spec/spec_helper.rb
|
data/package.py
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
from subprocess import check_call as call
|
2
|
-
import tempfile
|
3
|
-
|
4
|
-
def package(builder):
|
5
|
-
|
6
|
-
name = builder.name
|
7
|
-
jruby_version = builder.metadata["packaging"]["jruby_version"]
|
8
|
-
install_path = "/usr/lib/{0}".format(builder.name)
|
9
|
-
|
10
|
-
tmpdir = tempfile.mkdtemp()
|
11
|
-
|
12
|
-
def install_jruby():
|
13
|
-
|
14
|
-
url = "http://jruby.org.s3.amazonaws.com/downloads/{0}/jruby-bin-{0}.tar.gz".format(jruby_version)
|
15
|
-
package_path = "{0}/jruby-bin-{1}.tar.gz".format(tmpdir, jruby_version)
|
16
|
-
|
17
|
-
print "Downloading JRuby {0}".format(jruby_version)
|
18
|
-
call(["/usr/bin/curl", "--progress-bar", "-L", url, "-o", package_path])
|
19
|
-
|
20
|
-
print "Extracting {0}".format(package_path)
|
21
|
-
call(["tar", "zxf", package_path, "-C", tmpdir])
|
22
|
-
|
23
|
-
def create_jar():
|
24
|
-
gem_bin = "{0}/jruby-{1}/bin/gem".format(tmpdir, jruby_version)
|
25
|
-
jruby_bin = "{0}/jruby-{1}/bin/jruby".format(tmpdir, jruby_version)
|
26
|
-
# gem_home = "{0}/jruby-{1}/lib/ruby/gems/shared".format(tmpdir, jruby_version)
|
27
|
-
|
28
|
-
# print "Installing bundler: {0}".format(gem_bin)
|
29
|
-
call([jruby_bin, gem_bin, "install", "bundler", "--install-dir", ".gem"])
|
30
|
-
call([jruby_bin, "-e", "ENV['GEM_HOME']=File.join(Dir.pwd,'.gem');ENV['GEM_PATH']=File.join(Dir.pwd,'.gem');ENV['BUNDLE_GEMFILE']=File.join(Dir.pwd,'Gemfile');require'rubygems';require'bundler';require'bundler/cli';cli=Bundler::CLI.start"])
|
31
|
-
call([jruby_bin, "-e", "ENV['GEM_HOME']=File.join(Dir.pwd,'.gem');ENV['GEM_PATH']=File.join(Dir.pwd,'.gem');ENV['BUNDLE_GEMFILE']=File.join(Dir.pwd,'Gemfile');require'rubygems';require'warbler';Dir.mkdir('target');Warbler::Application.new.run;"])
|
32
|
-
|
33
|
-
|
34
|
-
def setup_dependencies():
|
35
|
-
builder.spec.set_build_arch('x86_64')
|
36
|
-
|
37
|
-
builder.spec.add_build_requires([
|
38
|
-
'cosmos-ca-tools'
|
39
|
-
])
|
40
|
-
|
41
|
-
def user():
|
42
|
-
builder.spec.add_pre_steps([
|
43
|
-
["groupadd -r {0}".format(name)],
|
44
|
-
["useradd -r -g {0} -G {0} -d / -s /sbin/nologin -c \"{0} ruby service\" {0}".format(name)]
|
45
|
-
])
|
46
|
-
|
47
|
-
def set_perms():
|
48
|
-
builder.spec.add_pre_steps([
|
49
|
-
["chown -R {0}:{0}".format(name)],
|
50
|
-
["chmod 744 {0}".format(install_path)]
|
51
|
-
])
|
52
|
-
|
53
|
-
def setup_bundler():
|
54
|
-
builder.spec.add_post_steps([
|
55
|
-
['/opt/jruby/bin/gem install bundler --no-ri --no-rdoc']
|
56
|
-
])
|
57
|
-
|
58
|
-
def install_gems():
|
59
|
-
builder.spec.add_post_steps([[
|
60
|
-
"GEM_HOME=/opt/jruby/lib/ruby/gems/shared",
|
61
|
-
"BUNDLE_GEMFILE={0}/Gemfile".format(install_path),
|
62
|
-
"/opt/jruby/bin/jruby -e \"require 'bundler/cli'; Bundler::CLI.start\""]
|
63
|
-
])
|
64
|
-
|
65
|
-
install_jruby()
|
66
|
-
create_jar()
|
67
|
-
|
68
|
-
setup_dependencies()
|
69
|
-
user()
|
70
|
-
setup_bundler()
|
71
|
-
install_gems()
|
data/project.json
DELETED