alephant 0.0.3-java → 0.0.4-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Code Climate](https://codeclimate.com/repos/52cd866de30ba018f10000a2/badges/5d9c02131201565a630e/gpa.png)](https://codeclimate.com/repos/52cd866de30ba018f10000a2/feed)
|
5
7
|
|
6
8
|
[![Build Status](https://travis-ci.org/kenoir/alephant.png?branch=master)](https://travis-ci.org/kenoir/alephant)
|
7
9
|
|
8
|
-
|
10
|
+
[![Gem Version](https://badge.fury.io/rb/alephant.png)](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