kilt-cms 0.9.13 → 1.0.0
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/README.rdoc +3 -5
- data/app/controllers/kilt/kilt_controller.rb +1 -1
- data/app/views/kilt/form/{boolean.html.erb → _boolean.html.erb} +0 -0
- data/app/views/kilt/form/{datetime.html.erb → _datetime.html.erb} +0 -0
- data/app/views/kilt/form/{file.html.erb → _file.html.erb} +1 -1
- data/app/views/kilt/form/{html.html.erb → _html.html.erb} +0 -0
- data/app/views/kilt/form/{image.html.erb → _image.html.erb} +1 -1
- data/app/views/kilt/form/{longtext.html.erb → _longtext.html.erb} +0 -0
- data/app/views/kilt/form/{number.html.erb → _number.html.erb} +0 -0
- data/app/views/kilt/form/{select_one.html.erb → _select_one.html.erb} +0 -0
- data/app/views/kilt/form/{text.html.erb → _text.html.erb} +0 -0
- data/app/views/kilt/form/{vimeo.html.erb → _vimeo.html.erb} +0 -0
- data/app/views/kilt/form/{youtube.html.erb → _youtube.html.erb} +0 -0
- data/app/views/kilt/kilt/_form.html.erb +12 -10
- data/app/views/kilt/kilt/edit.html.erb +1 -1
- data/app/views/kilt/kilt/index.html.erb +3 -2
- data/app/views/kilt/kilt/list.html.erb +6 -9
- data/app/views/kilt/kilt/new.html.erb +1 -1
- data/app/views/layouts/kilt/cms/_menu.html.erb +2 -6
- data/lib/generators/kilt/backend_generator.rb +28 -6
- data/lib/generators/kilt/templates/backend/create_kilt_objects.rb +13 -0
- data/lib/generators/kilt/templates/backend/creds.yml.example +10 -5
- data/lib/generators/kilt/templates/backend/creds.yml.rethinkdb.example +22 -0
- data/lib/kilt.rb +34 -54
- data/lib/kilt/base.rb +3 -2
- data/lib/kilt/db/active_record.rb +50 -0
- data/lib/kilt/db/rethink_db.rb +108 -0
- data/lib/kilt/form.rb +7 -5
- data/lib/kilt/formatting.rb +39 -0
- data/lib/kilt/object.rb +32 -31
- data/lib/kilt/utils.rb +32 -39
- data/lib/kilt_object.rb +3 -0
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/database.yml +5 -0
- data/test/dummy/config/initializers/kilt.rb +1 -1
- data/test/dummy/config/kilt/config.yml +4 -13
- data/test/dummy/config/kilt/creds.yml +16 -11
- data/test/dummy/config/kilt/creds.yml.rethinkdb.example +22 -0
- data/test/dummy/config/routes.rb +1 -1
- data/test/dummy/db/migrate/20140519110428_create_kilt_objects.rb +13 -0
- data/test/dummy/db/schema.rb +29 -0
- data/test/dummy/log/development.log +551 -0
- data/test/dummy/public/uploads/image/timbo.jpg +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/18837248cb3274df9b7c6b0a5dcd56a5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/20dffc9385ea740ceca470ee4e4b2197 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/23733156ea27da67211ba7ff763d76f0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3148655edeef1c319d57d0f9570acfd5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/32ab48c63ad3bb6ddc1f419e51adb5db +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/36715e644093cfcb33ac795f3c9d66fe +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/36f9a7f6f43adb582ac6eec43b58eb30 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/3d8ca1585ee95c5efb388645d66cf377 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/413be9c73d25c7febe933f4619da7cf8 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4a935342c0113b534ad7622234965544 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4b5c4a1edd3823a6a6c39e06b6eb230a +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4c5736bf0bd429296d1a32930364897e +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4f26158b7a804a3e3c47ce0ceff2798c +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/542fc810f9cd36e7bed9a3e5e9670995 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/56f1e7d57d31bf3315e1e33732d57faa +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5bea4c2d87ec725262213ed51575b485 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6b6e86e81f5e8f80bb2b3d1e8f7ed7f3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6c2ddc22c04321c269de383e37cb519b +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7035e5c60f5da3b7fc12c472677483d0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/704c682957c2beb38a1927ddb66cc557 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/74b6c3e00222b8bf31b0ecf50fcb0d38 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/91021bdb7ebb3d4f6fdf4e49909d4c07 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/914095efd3b33401a7f29f9fb05d72d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9dd98bca318fb820a8451cafce020588 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/9f2c00a36b5b8c713a797b508c778a65 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/a88ab4e49bb7203b8e0586c38efdd2b0 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/acfc15d25fde8b933b06c91324755751 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/c0671678b70011547b80da0669d031cc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d6973c1d43f8ca41b98a6b640fda2616 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dc676330961fd22be77c48cb77ec065f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ddc29f2c13cd99d017fd526b61dcb951 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/de45247cb814cafe20e9e46c79e470fe +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/df0b7c3ac590a286561806e813c2974f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dfa8b85e3c1273b7e69839e4e607c3e1 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e22d705d0c889ec4837f183a9beec0f3 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/e3a4ad3549e1e57d03698a36daeff406 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ef7c8ce46dfc9e9087ce84dbdfdd0011 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f4b5dd06a6113950c0f481cbc5a31a66 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/data/meta_request/1c3d4a4b-d7e1-4126-8bfc-572acbc2f675.json +1 -0
- data/test/dummy/tmp/data/meta_request/449ff78e-30d2-4cc5-bbb7-3397d04a4c46.json +1 -0
- data/test/dummy/tmp/data/meta_request/5974cfb9-99bd-4d5c-a4e1-6e352ecd2dd8.json +1 -0
- data/test/dummy/tmp/data/meta_request/960de12b-b1c5-4d44-937b-e3d8c00d682c.json +1 -0
- data/test/dummy/tmp/data/meta_request/9df9ad77-1b70-4fb7-ad18-f31f28c60c6c.json +1 -0
- data/test/dummy/tmp/data/meta_request/a5374758-4e16-487a-ab11-9a69a1abed2e.json +1 -0
- data/test/dummy/tmp/data/meta_request/a65d97b2-df1f-445e-99d5-615c4db5c4e1.json +1 -0
- data/test/dummy/tmp/data/meta_request/b3693c6f-23cd-4afe-ae82-38078eaa643a.json +1 -0
- data/test/dummy/tmp/data/meta_request/daa1c80a-bad3-4bc1-8f67-d586979cbedc.json +1 -0
- data/test/dummy/tmp/data/meta_request/e2e7621f-08e5-46dd-83c2-b87eb6d5fd45.json +1 -0
- data/test/empty.sqlite3 +0 -0
- data/test/generators/kilt/backend_generator_spec.rb +70 -0
- data/test/kilt/form_spec.rb +40 -51
- data/test/kilt/formatting_spec.rb +66 -0
- data/test/kilt/object_spec.rb +204 -0
- data/test/kilt/utils_spec.rb +147 -0
- data/test/kilt_object_spec.rb +12 -0
- data/test/kilt_spec.rb +422 -0
- data/test/minitest_helper.rb +58 -0
- metadata +164 -66
- data/test/dummy/tmp/data/meta_request/191f094a-5e87-4654-bc80-5acb51d3f903.json +0 -1
- data/test/dummy/tmp/data/meta_request/1eb9499d-2e84-47df-ac0a-da308031aa3a.json +0 -1
- data/test/dummy/tmp/data/meta_request/300cabd2-6e51-4b1b-ab55-a072049c2a0f.json +0 -1
- data/test/dummy/tmp/data/meta_request/3ec7ea74-e7a7-4f4d-9434-e08edfc12b8a.json +0 -1
- data/test/dummy/tmp/data/meta_request/5bb81411-321e-4cba-9ffa-87fcd8105ef4.json +0 -1
- data/test/dummy/tmp/data/meta_request/9d6e10c1-5b14-4199-852e-9f1e97132b8f.json +0 -1
- data/test/dummy/tmp/data/meta_request/a6403ed9-21f1-4a00-9725-4a1c544214f6.json +0 -1
- data/test/dummy/tmp/data/meta_request/b4487e0b-0a08-40a3-a364-e715e6765631.json +0 -1
- data/test/dummy/tmp/data/meta_request/d399f913-d3a5-4de3-b012-848377a702fc.json +0 -1
- data/test/dummy/tmp/data/meta_request/dcf95267-1855-4062-85c8-e880f8d62443.json +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92e36981513be1d52296ed4d4321e194a104c4dc
|
|
4
|
+
data.tar.gz: a6d90b7b31ef3246fa406a754dec05943469c030
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f4ab8a4e06b2a8c2b979040006f8d39557e1c091b9521e7293ee9d8bce710b7e6b9e3a1c84a29c6173cb05f1220ebbf0cc9cea9be12be35df0231c23fda782f4
|
|
7
|
+
data.tar.gz: 7a13dd0365393f397a46c328f40f77c0f416f4f3fd04662ebe1d55fa96f975492b7da31c405a4f41e560d282973c6bb2b54229fb5395859439022107360c253c
|
data/README.rdoc
CHANGED
|
@@ -25,13 +25,11 @@ Note: We're trying to find a way around that last step, but for now we're just e
|
|
|
25
25
|
- Run the Kilt generator:
|
|
26
26
|
|
|
27
27
|
$ rails g kilt:install
|
|
28
|
-
|
|
29
|
-
- Create a creds file:
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
If you would like to use RethinkDB as your datastore, you'll need to copy the rethinkdb example. Add your database info to the creds.yml. You should have a RethinkDB set up and running already.
|
|
30
|
+
|
|
31
|
+
$ mv config/kilt/creds.yml.rethinkdb.example config/kilt/creds.yml
|
|
32
32
|
|
|
33
|
-
- Add your database info to the creds.yml. You should have a RethinkDB set up and running already.
|
|
34
|
-
|
|
35
33
|
- If you want to use S3 for your image and file uploads, add your S3 info to creds.yml. Also set the following in your config.yml:
|
|
36
34
|
|
|
37
35
|
storage:
|
|
@@ -114,7 +114,7 @@ module Kilt
|
|
|
114
114
|
private
|
|
115
115
|
|
|
116
116
|
def ensure_config
|
|
117
|
-
|
|
117
|
+
unless Kilt::Utils.config_is_valid?
|
|
118
118
|
lines = []
|
|
119
119
|
lines << '<pre>'
|
|
120
120
|
lines << 'The Kilt gem has been installed, but you haven\'t configured it yet.'
|
|
File without changes
|
|
File without changes
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<% if object["#{field_name}"] && object["#{field_name}"] != '' %>
|
|
5
5
|
<div class="filename">
|
|
6
|
-
<span><%= link_to object["#{field_name}"], Kilt::Utils.download_location(
|
|
6
|
+
<span><%= link_to object["#{field_name}"], Kilt::Utils.download_location('file', object["#{field_name}"]), :target => '_blank' %>
|
|
7
7
|
<a class="button delete <% if !object["#{field_name}"] || object["#{field_name}"] == "" %>hidden<% end %>">Reset/remove file</a></span>
|
|
8
8
|
</div>
|
|
9
9
|
<% end %>
|
|
File without changes
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<% if object["#{field_name}"] && object["#{field_name}"] != '' %>
|
|
5
5
|
<div id="image-container-<%= index %>">
|
|
6
6
|
<div id="image-<%= index %>">
|
|
7
|
-
<%= image_tag Kilt::Utils.download_location(
|
|
7
|
+
<%= image_tag Kilt::Utils.download_location('image', object["#{field_name}"]), :width => '100%' %>
|
|
8
8
|
</div>
|
|
9
9
|
<div>
|
|
10
10
|
<a id="image-reset-<%= index%>" class="button delete <% if !object["#{field_name}"] || object["#{field_name}"] == "" %>hidden<% end %>">Reset/remove image</a>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -2,18 +2,15 @@
|
|
|
2
2
|
<div class="wr">
|
|
3
3
|
|
|
4
4
|
<%
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
else
|
|
8
|
-
name = @type.pluralize.capitalize
|
|
9
|
-
end
|
|
5
|
+
singular = Kilt::Formatting.singular_name_of @type
|
|
6
|
+
plural = Kilt::Formatting.plural_name_of @type
|
|
10
7
|
%>
|
|
11
8
|
|
|
12
|
-
<h2><%= @object['name'] %> <small><%=
|
|
9
|
+
<h2><%= @object['name'] %> <small><%= singular %></small></h2>
|
|
13
10
|
|
|
14
11
|
<div class="page-actions">
|
|
15
|
-
<%= link_to "← Back to #{
|
|
16
|
-
<%= link_to "New #{
|
|
12
|
+
<%= link_to "← Back to #{plural}", list_path(@type), :class => 'button back' %>
|
|
13
|
+
<%= link_to "New #{singular}", new_object_path(@type), :class => 'button back' if !@object.empty? %>
|
|
17
14
|
</div>
|
|
18
15
|
|
|
19
16
|
<% if flash[:error] -%>
|
|
@@ -27,7 +24,12 @@
|
|
|
27
24
|
<%= form_tag @path, :method => "post", :multipart => true do %>
|
|
28
25
|
|
|
29
26
|
<% @object.fields.each_with_index do |(key, value), index| %>
|
|
30
|
-
<%= Kilt::Form.
|
|
27
|
+
<%= Kilt::Form.render_field(self, {
|
|
28
|
+
key: key,
|
|
29
|
+
value: value,
|
|
30
|
+
object: @object,
|
|
31
|
+
index: index
|
|
32
|
+
} ) %>
|
|
31
33
|
<% end %>
|
|
32
34
|
|
|
33
35
|
<div class="form-input actions">
|
|
@@ -36,4 +38,4 @@
|
|
|
36
38
|
|
|
37
39
|
<% end%>
|
|
38
40
|
|
|
39
|
-
</div>
|
|
41
|
+
</div>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
<% @path = update_object_path(@type.pluralize, @slug) %>
|
|
2
|
-
<%= render :partial => 'form' %>
|
|
2
|
+
<%= render :partial => 'form' %>
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
<h2>Dashboard</h2>
|
|
3
3
|
|
|
4
4
|
<ul class="object-list">
|
|
5
|
-
<% @types.each do |type,
|
|
5
|
+
<% @types.each do |type, _| %>
|
|
6
|
+
<% name = Kilt::Formatting.plural_name_of(type) %>
|
|
6
7
|
<li><%= link_to name, list_path(type.pluralize) %></li>
|
|
7
8
|
<% end %>
|
|
8
9
|
</ul>
|
|
9
|
-
</div>
|
|
10
|
+
</div>
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
<div class="wr">
|
|
2
2
|
|
|
3
3
|
<%
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
else
|
|
7
|
-
name = @type.pluralize.capitalize
|
|
8
|
-
end
|
|
4
|
+
singular = Kilt::Formatting.singular_name_of @type
|
|
5
|
+
plural = Kilt::Formatting.plural_name_of @type
|
|
9
6
|
%>
|
|
10
7
|
|
|
11
|
-
<h2><%=
|
|
8
|
+
<h2><%= plural %></h2>
|
|
12
9
|
|
|
13
10
|
<div class="page-actions">
|
|
14
|
-
<%= link_to "New #{
|
|
11
|
+
<%= link_to "New #{singular}", new_object_path(@type.singularize), :class => 'button' %>
|
|
15
12
|
</div>
|
|
16
13
|
|
|
17
14
|
<!-- todo: search by title -->
|
|
@@ -26,7 +23,7 @@
|
|
|
26
23
|
|
|
27
24
|
<% if @objects.empty? %>
|
|
28
25
|
|
|
29
|
-
No <%=
|
|
26
|
+
No <%= plural %> found.
|
|
30
27
|
|
|
31
28
|
<% else %>
|
|
32
29
|
|
|
@@ -72,4 +69,4 @@
|
|
|
72
69
|
|
|
73
70
|
<% end %>
|
|
74
71
|
|
|
75
|
-
</div>
|
|
72
|
+
</div>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
<% @path = create_object_path(@type.pluralize) %>
|
|
2
|
-
<%= render :partial => 'form' %>
|
|
2
|
+
<%= render :partial => 'form' %>
|
|
@@ -4,13 +4,9 @@
|
|
|
4
4
|
<a class="button small dashboard" href="<%= kilt_engine.root_path %>">Dashboard</a>
|
|
5
5
|
<% Kilt.types.each do |type| %>
|
|
6
6
|
<%
|
|
7
|
-
|
|
8
|
-
name = Kilt.send(type).name
|
|
9
|
-
else
|
|
10
|
-
name = type.pluralize.capitalize
|
|
11
|
-
end
|
|
7
|
+
plural = Kilt::Formatting.plural_name_of type
|
|
12
8
|
%>
|
|
13
|
-
<%= link_to
|
|
9
|
+
<%= link_to plural, list_path(type.pluralize), class: "button small dashboard" %>
|
|
14
10
|
<% end %>
|
|
15
11
|
</div>
|
|
16
12
|
</header>
|
|
@@ -7,14 +7,36 @@ module Kilt
|
|
|
7
7
|
source_root File.expand_path("../templates/backend", __FILE__)
|
|
8
8
|
|
|
9
9
|
def generate
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
add_the_config_file
|
|
11
|
+
add_the_credential_file_examples
|
|
12
|
+
add_the_database_migration_file
|
|
13
|
+
add_the_kilt_routes
|
|
14
|
+
add_the_initializer
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def add_the_config_file
|
|
12
20
|
template 'config.yml.erb', Rails.root.join('config', 'kilt', 'config.yml')
|
|
13
|
-
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def add_the_credential_file_examples
|
|
24
|
+
copy_file 'creds.yml.example', Rails.root.join('config', 'kilt', 'creds.yml')
|
|
25
|
+
copy_file 'creds.yml.rethinkdb.example', Rails.root.join('config', 'kilt', 'creds.yml.rethinkdb.example')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def add_the_database_migration_file
|
|
29
|
+
copy_file 'create_kilt_objects.rb', Rails.root.join('db', 'migrate', Time.now.strftime("%Y%m%d%H%M%S") + "_create_kilt_objects.rb")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def add_the_kilt_routes
|
|
33
|
+
inject_into_file Rails.root.join('config', 'routes.rb'), "\n\tmount Kilt::Engine => '/admin', as: 'kilt_engine'\n", :after => ".routes.draw do\n"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def add_the_initializer
|
|
14
37
|
copy_file 'kilt.rb', Rails.root.join('config', 'initializers', 'kilt.rb')
|
|
15
|
-
inject_into_file Rails.root.join('config', 'routes.rb'), "\n\tmount Kilt::Engine => '/admin', as: 'kilt_engine'\n", :after => "#{Rails.application.class.parent_name.camelize}::Application.routes.draw do\n"
|
|
16
|
-
|
|
17
38
|
end
|
|
39
|
+
|
|
18
40
|
end
|
|
19
41
|
end
|
|
20
|
-
end
|
|
42
|
+
end
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
test:
|
|
2
|
+
db:
|
|
3
|
+
type: active_record
|
|
4
|
+
development:
|
|
5
|
+
db:
|
|
6
|
+
type: active_record
|
|
7
|
+
production:
|
|
8
|
+
db:
|
|
9
|
+
type: active_record
|
|
5
10
|
s3:
|
|
6
11
|
key: <S3 key>
|
|
7
12
|
secret: <S3 secret>
|
|
8
13
|
bucket: <S3 bucket>
|
|
9
14
|
auth:
|
|
10
15
|
username: <Username>
|
|
11
|
-
password: <Password>
|
|
16
|
+
password: <Password>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
test:
|
|
2
|
+
db:
|
|
3
|
+
host: 127.0.0.1
|
|
4
|
+
port: 28015
|
|
5
|
+
db: my_app_test
|
|
6
|
+
development:
|
|
7
|
+
db:
|
|
8
|
+
host: 127.0.0.1
|
|
9
|
+
port: 28015
|
|
10
|
+
db: my_app_development
|
|
11
|
+
production:
|
|
12
|
+
db:
|
|
13
|
+
host: ENV['KILT_HOST']
|
|
14
|
+
port: ENV['KILT_PORT']
|
|
15
|
+
db: ENV['KILT_DB']
|
|
16
|
+
s3:
|
|
17
|
+
key: <S3 key>
|
|
18
|
+
secret: <S3 secret>
|
|
19
|
+
bucket: <S3 bucket>
|
|
20
|
+
auth:
|
|
21
|
+
username: <Username>
|
|
22
|
+
password: <Password>
|
data/lib/kilt.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "kilt/base"
|
|
2
|
+
require_relative "kilt_object"
|
|
2
3
|
|
|
3
4
|
# Include the Rethink shortcut module, which will among other things instantiate a new
|
|
4
5
|
# Rethink object (as "r") if needed
|
|
@@ -38,20 +39,11 @@ module Kilt
|
|
|
38
39
|
# Example: Kilt.create(object)
|
|
39
40
|
def self.create(object)
|
|
40
41
|
object['created_at'] = object['updated_at'] = Time.now
|
|
41
|
-
object['unique_id']
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if results.to_a.length > 0
|
|
47
|
-
object['slug'] = "#{object['slug']}-#{(Time.now.to_f * 1000).to_i}"
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Insert the record
|
|
51
|
-
r.db(Kilt.config.db.db).table('objects').insert(object.values).run
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
(result['errors'] == 0)
|
|
42
|
+
object['unique_id'] = "#{(Time.now.to_f * 1000).to_i}"
|
|
43
|
+
object['type'] = object.instance_eval { @type }
|
|
44
|
+
object['slug'] = slug_for object
|
|
45
|
+
|
|
46
|
+
Utils.database.create object
|
|
55
47
|
end
|
|
56
48
|
|
|
57
49
|
# Update an object
|
|
@@ -59,52 +51,25 @@ module Kilt
|
|
|
59
51
|
# Example: Kilt.update(object)
|
|
60
52
|
def self.update(slug, object)
|
|
61
53
|
object['updated_at'] = Time.now
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
# Keep the original slug handy
|
|
65
|
-
results = r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{slug}"}).limit(1).run
|
|
66
|
-
original = results.to_a.first['unique_id']
|
|
67
|
-
|
|
68
|
-
# Check for slug uniqueness
|
|
69
|
-
results = r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{object['slug']}"}).run
|
|
70
|
-
if results
|
|
71
|
-
result = results.to_a.first
|
|
72
|
-
if result && result['unique_id'] != original
|
|
73
|
-
object['slug'] = "#{Kilt::Utils.slugify(object['name'])}-#{(Time.now.to_f * 1000).to_i}"
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Update the record
|
|
78
|
-
r.db(Kilt.config.db.db).table('objects').filter({'unique_id' => "#{original}"}).update(object.values).run
|
|
79
|
-
|
|
80
|
-
end
|
|
81
|
-
(result['errors'] == 0)
|
|
82
|
-
end
|
|
54
|
+
object['slug'] = slug_for object
|
|
83
55
|
|
|
56
|
+
Utils.database.update object
|
|
57
|
+
end
|
|
84
58
|
|
|
85
59
|
# Delete an object
|
|
86
60
|
# Returns: boolean
|
|
87
61
|
# Example: Kilt.delete('some-object')
|
|
88
62
|
def self.delete(slug)
|
|
89
|
-
|
|
90
|
-
r.db(Kilt.config.db.db).table('objects').filter({'slug' => "#{slug.to_s}"}).delete().run
|
|
91
|
-
end
|
|
92
|
-
(result['errors'] == 0)
|
|
63
|
+
Utils.database.delete slug
|
|
93
64
|
end
|
|
94
65
|
|
|
95
66
|
# Get the content for a specific object
|
|
96
67
|
# Returns: Kilt::Object instance
|
|
97
68
|
# Example: Kilt.object('big-event')
|
|
98
69
|
def self.get(slug)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
result = values.to_a.first
|
|
105
|
-
|
|
106
|
-
# create an object and return it
|
|
107
|
-
Kilt::Object.new(result['type'], result)
|
|
70
|
+
result = Utils.database.find(slug)
|
|
71
|
+
result ? Kilt::Object.new(result['type'], result)
|
|
72
|
+
: nil
|
|
108
73
|
end
|
|
109
74
|
|
|
110
75
|
# Get a list of objects
|
|
@@ -112,13 +77,28 @@ module Kilt
|
|
|
112
77
|
# Example: Kilt.objects('events')
|
|
113
78
|
# Used directly or via method_missing
|
|
114
79
|
def self.get_collection(object_type)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
80
|
+
results = Utils.database.find_all_by_type object_type
|
|
81
|
+
Kilt::ObjectCollection.new results
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
class << self
|
|
85
|
+
|
|
86
|
+
private
|
|
87
|
+
|
|
88
|
+
def slug_is_unique_for? slug, object
|
|
89
|
+
result = Utils.database.find(slug)
|
|
90
|
+
return true if result.nil?
|
|
91
|
+
|
|
92
|
+
"#{result['unique_id']}" == "#{object['unique_id']}"
|
|
118
93
|
end
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
94
|
+
|
|
95
|
+
def slug_for object
|
|
96
|
+
slug = object['slug'].to_s.strip == '' ? Utils.slugify(object['name'])
|
|
97
|
+
: "#{object['slug']}"
|
|
98
|
+
slug_is_unique_for?(slug, object) ? slug
|
|
99
|
+
: "#{slug}-#{(Time.now.to_f * 1000).to_i}"
|
|
100
|
+
end
|
|
101
|
+
|
|
122
102
|
end
|
|
123
103
|
|
|
124
104
|
end
|