kilt-cms 0.9.13 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,50 @@
|
|
1
|
+
module Kilt
|
2
|
+
|
3
|
+
module DB
|
4
|
+
|
5
|
+
class ActiveRecord
|
6
|
+
|
7
|
+
def find(slug)
|
8
|
+
object = KiltObject.where(slug: slug).first
|
9
|
+
object ? object.data : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def find_all_by_type type
|
13
|
+
KiltObject.where(object_type: "#{type.singularize.to_s}")
|
14
|
+
.map { |x| x.data }
|
15
|
+
end
|
16
|
+
|
17
|
+
def create(object)
|
18
|
+
KiltObject.create!(unique_id: object['unique_id'],
|
19
|
+
slug: object['slug'],
|
20
|
+
object_type: object['type'],
|
21
|
+
data: object.values)
|
22
|
+
true
|
23
|
+
rescue
|
24
|
+
false
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(current)
|
28
|
+
object = KiltObject.where(unique_id: current['unique_id']).first
|
29
|
+
return false unless object
|
30
|
+
object.slug = current['slug']
|
31
|
+
object.data = current.values
|
32
|
+
object.save
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete(slug)
|
36
|
+
object = KiltObject.where(slug: slug).first
|
37
|
+
object.delete if object
|
38
|
+
true
|
39
|
+
rescue
|
40
|
+
false
|
41
|
+
end
|
42
|
+
|
43
|
+
def setup!
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module Kilt
|
2
|
+
|
3
|
+
module DB
|
4
|
+
|
5
|
+
class RethinkDb
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def find(slug)
|
12
|
+
results = execute { slug_query(slug).limit(1) }
|
13
|
+
return nil unless results
|
14
|
+
results = results.to_a
|
15
|
+
return nil if results.first.is_a? Array
|
16
|
+
results.first
|
17
|
+
end
|
18
|
+
|
19
|
+
def find_all_by_type type
|
20
|
+
execute { type_query(type) }.to_a
|
21
|
+
end
|
22
|
+
|
23
|
+
def create(object)
|
24
|
+
result = execute { objects_table.insert(object.values) }
|
25
|
+
result['errors'] == 0
|
26
|
+
end
|
27
|
+
|
28
|
+
def update(object)
|
29
|
+
result = execute do
|
30
|
+
unique_id_query(object['unique_id']).update(object.values)
|
31
|
+
end
|
32
|
+
result['errors'] == 0
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete(slug)
|
36
|
+
result = execute { slug_query(slug).delete() }
|
37
|
+
result['errors'] == 0
|
38
|
+
end
|
39
|
+
|
40
|
+
def delete_all
|
41
|
+
execute do
|
42
|
+
@r.db(Kilt.config.test.db.db).table('objects').delete()
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Make a db call
|
47
|
+
def execute(&block)
|
48
|
+
setup_the_database
|
49
|
+
block.call.run(@connection)
|
50
|
+
end
|
51
|
+
|
52
|
+
def setup!
|
53
|
+
if @options[:host] && @options[:port]
|
54
|
+
begin
|
55
|
+
# See if the db exists and create it otherwise
|
56
|
+
dbs = execute { @r.db_list }.to_a
|
57
|
+
if !dbs.to_a.include? @options[:db]
|
58
|
+
execute { @r.db_create(@options[:db]) }
|
59
|
+
end
|
60
|
+
|
61
|
+
# See if the table exists and create it otherwise
|
62
|
+
tables = execute { @r.db(@options[:db]).table_list }.to_a
|
63
|
+
if !tables.to_a.include? "objects"
|
64
|
+
execute { @r.db(@options[:db]).table_create("objects", :primary_key => "unique_id") }
|
65
|
+
end
|
66
|
+
rescue
|
67
|
+
raise Kilt::CantSetupDatabaseError
|
68
|
+
end
|
69
|
+
else
|
70
|
+
raise Kilt::NoDatabaseConfigError
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def setup_the_database
|
77
|
+
unless @r && @connection
|
78
|
+
begin
|
79
|
+
@r = RethinkDB::RQL.new
|
80
|
+
@connection = @r.connect(:host => @options[:host], :port => @options[:port], :db => @options[:db])
|
81
|
+
rescue
|
82
|
+
raise Kilt::CantConnectToDatabaseError
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def objects_table
|
88
|
+
setup_the_database
|
89
|
+
@r.table('objects')
|
90
|
+
end
|
91
|
+
|
92
|
+
def slug_query(slug)
|
93
|
+
objects_table.filter( { 'slug' => "#{slug}" } )
|
94
|
+
end
|
95
|
+
|
96
|
+
def type_query(type)
|
97
|
+
objects_table.filter( {'type' => "#{type.singularize.to_s}" } )
|
98
|
+
end
|
99
|
+
|
100
|
+
def unique_id_query(unique_id)
|
101
|
+
objects_table.filter( { 'unique_id' => "#{unique_id}" } )
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
data/lib/kilt/form.rb
CHANGED
@@ -8,10 +8,14 @@ module Kilt
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.method_missing(method, *args)
|
11
|
-
locals = { object: args[0], field_name: args[1], index: args[2], options: args[3] }
|
11
|
+
locals = { object: args[0], field_name: args[1], index: args[2], options: args[4], view: args[3] }
|
12
12
|
render_view method, locals
|
13
13
|
rescue
|
14
|
-
render_view '
|
14
|
+
render_view 'default', locals
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.render_field(view, data)
|
18
|
+
Kilt::Form.prep_field(data[:value], data[:object], data[:key], data[:index], view)
|
15
19
|
end
|
16
20
|
|
17
21
|
def self.prep_field(method, *args)
|
@@ -38,9 +42,7 @@ module Kilt
|
|
38
42
|
private
|
39
43
|
|
40
44
|
def self.render_view name, locals
|
41
|
-
|
42
|
-
:locals => locals }
|
43
|
-
ActionView::Base.new(TEMPLATES_DIR).render data
|
45
|
+
locals[:view].send(:render, { partial: "kilt/form/#{name}", locals: locals } )
|
44
46
|
end
|
45
47
|
|
46
48
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Kilt
|
2
|
+
|
3
|
+
module Formatting
|
4
|
+
|
5
|
+
def self.singular_name_of object
|
6
|
+
simple_name_of(object)
|
7
|
+
.split('_')
|
8
|
+
.map { |x| x.capitalize }
|
9
|
+
.join(' ')
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.plural_name_of object
|
13
|
+
singular_name_of(object).pluralize
|
14
|
+
end
|
15
|
+
|
16
|
+
class << self
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def simple_name_of object
|
21
|
+
type = if object.is_a? Symbol
|
22
|
+
object.to_s
|
23
|
+
elsif object.is_a? String
|
24
|
+
object
|
25
|
+
else
|
26
|
+
object.type.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
name_of_type_in_config(type) || type
|
30
|
+
end
|
31
|
+
|
32
|
+
def name_of_type_in_config type
|
33
|
+
kilt_type = Kilt.send(type)
|
34
|
+
return nil unless kilt_type
|
35
|
+
kilt_type['name']
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/kilt/object.rb
CHANGED
@@ -4,41 +4,21 @@ module Kilt
|
|
4
4
|
|
5
5
|
def initialize(type, values = {})
|
6
6
|
@type = type
|
7
|
-
|
8
|
-
|
7
|
+
initialize_values values
|
9
8
|
assemble_fields
|
10
9
|
end
|
11
10
|
|
12
11
|
def fill(params)
|
13
|
-
|
14
|
-
|
15
|
-
@fields.each do |key, value|
|
16
|
-
if params[key] || params["#{key}-hidden"]
|
17
|
-
field_type = value.downcase
|
18
|
-
if ['file', 'image'].include? field_type
|
19
|
-
if params["#{key}-hidden"] && params["#{key}-hidden"] == 'clear' && !params[key]
|
20
|
-
@values[key.to_s] = ''
|
21
|
-
elsif params[key]
|
22
|
-
@values[key.to_s] = Kilt::Upload.send(field_type, params[key])
|
23
|
-
end
|
24
|
-
else
|
25
|
-
@values[key.to_s] = params[key]
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Add some extra fields
|
31
|
-
if !@slug
|
32
|
-
@values['slug'] = Utils.slugify(@values['name'])
|
12
|
+
fields_that_should_be_set_given(params).each do |field, field_type|
|
13
|
+
self[field] = the_value_for field, field_type, params
|
33
14
|
end
|
34
|
-
|
35
|
-
@values['type'] = @type
|
36
|
-
|
37
15
|
end
|
38
16
|
|
39
17
|
def [](key)
|
40
18
|
# Return the values of the object as a hash
|
41
|
-
|
19
|
+
value = @values[key.to_s]
|
20
|
+
return nil unless value
|
21
|
+
value.respond_to?(:html_safe) ? value.html_safe : value
|
42
22
|
end
|
43
23
|
|
44
24
|
def []=(key, value)
|
@@ -56,11 +36,32 @@ module Kilt
|
|
56
36
|
private
|
57
37
|
|
58
38
|
def assemble_fields
|
59
|
-
|
60
|
-
@fields =
|
61
|
-
|
62
|
-
|
39
|
+
@fields = Kilt.send(@type).fields.to_h
|
40
|
+
@fields['name'] = 'text' unless @fields[:name]
|
41
|
+
end
|
42
|
+
|
43
|
+
def the_value_for(key, field_type, params)
|
44
|
+
if params["#{key}-hidden"] == 'clear' && !params[key]
|
45
|
+
''
|
46
|
+
elsif ['file', 'image'].include? field_type
|
47
|
+
Kilt::Upload.send field_type, params[key]
|
48
|
+
else
|
49
|
+
params[key]
|
63
50
|
end
|
64
51
|
end
|
52
|
+
|
53
|
+
def fields_that_should_be_set_given params
|
54
|
+
@fields.map { |k, v| [k, v.downcase] }
|
55
|
+
.select { |k, v| params[k] || (params["#{k}-hidden"].to_s != '') }
|
56
|
+
end
|
57
|
+
|
58
|
+
def initialize_values values
|
59
|
+
@values = values
|
60
|
+
|
61
|
+
@values.keys
|
62
|
+
.select { |x| x.is_a? Symbol }
|
63
|
+
.each { |k| @values[k.to_s] = @values[k] }
|
64
|
+
end
|
65
|
+
|
65
66
|
end
|
66
|
-
end
|
67
|
+
end
|
data/lib/kilt/utils.rb
CHANGED
@@ -1,46 +1,33 @@
|
|
1
1
|
module Kilt
|
2
2
|
class Utils
|
3
3
|
|
4
|
-
# Set up the database
|
5
4
|
def self.setup_db
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
rescue
|
10
|
-
raise Kilt::CantConnectToDatabaseError
|
11
|
-
end
|
12
|
-
|
13
|
-
begin
|
14
|
-
|
15
|
-
# See if the db exists and create it otherwise
|
16
|
-
dbs = r.db_list.run
|
17
|
-
if !dbs.to_a.include? Kilt.config.db.db
|
18
|
-
r.db_create(Kilt.config.db.db).run
|
19
|
-
end
|
20
|
-
|
21
|
-
# See if the table exists and create it otherwise
|
22
|
-
tables = r.db(Kilt.config.db.db).table_list.run
|
23
|
-
if !tables.to_a.include? "objects"
|
24
|
-
r.db(Kilt.config.db.db).table_create("objects", :primary_key => "unique_id").run
|
25
|
-
end
|
26
|
-
|
27
|
-
rescue
|
28
|
-
raise Kilt::CantSetupDatabaseError
|
29
|
-
ensure
|
30
|
-
db.close
|
31
|
-
end
|
32
|
-
|
33
|
-
else
|
34
|
-
raise Kilt::NoDatabaseConfigError
|
5
|
+
return unless current_db_config
|
6
|
+
if db_type = current_db_config[:type]
|
7
|
+
use_db(db_type.to_sym)
|
35
8
|
end
|
9
|
+
database.setup!
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.use_db db_type
|
13
|
+
return if @db_type == db_type
|
14
|
+
@db_type = db_type
|
15
|
+
@database = nil
|
36
16
|
end
|
37
17
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
18
|
+
def self.database
|
19
|
+
@database ||= if @db_type == :active_record
|
20
|
+
Kilt::DB::ActiveRecord.new
|
21
|
+
else
|
22
|
+
Kilt::DB::RethinkDb.new current_db_config
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.current_db_config
|
27
|
+
current_environment = (ENV['RAILS_ENV'].to_s == '' ? 'development' : ENV['RAILS_ENV']).to_sym
|
28
|
+
Kilt.config[current_environment][:db]
|
29
|
+
rescue
|
30
|
+
Kilt.config[:db]
|
44
31
|
end
|
45
32
|
|
46
33
|
# Ensure we have local storage dirs
|
@@ -89,7 +76,7 @@ module Kilt
|
|
89
76
|
ret.gsub! /\s*&\s*/, " and "
|
90
77
|
|
91
78
|
#replace all non alphanumeric, underscore or periods with dash
|
92
|
-
ret.gsub! /\s*[^A-Za-z0-9
|
79
|
+
ret.gsub! /\s*[^A-Za-z0-9]\s*/, '-'
|
93
80
|
|
94
81
|
#convert double dash to single
|
95
82
|
ret.gsub! /-+/, "-"
|
@@ -107,11 +94,17 @@ module Kilt
|
|
107
94
|
ret.gsub! /_/, " "
|
108
95
|
ret.capitalize
|
109
96
|
end
|
97
|
+
|
98
|
+
def self.config_is_valid?
|
99
|
+
Kilt.config.empty? == false && current_db_config
|
100
|
+
#!(Kilt.config.empty? || !Kilt.config.db)
|
101
|
+
#!Kilt.config.empty? && Kilt.config.db
|
102
|
+
end
|
110
103
|
|
111
104
|
# Print a list of objects, functions, etc.
|
112
105
|
def self.tips
|
113
106
|
lines = []
|
114
|
-
if
|
107
|
+
if config_is_valid?
|
115
108
|
lines << ''
|
116
109
|
|
117
110
|
# Store the first type so we can use it down below
|
@@ -163,4 +156,4 @@ module Kilt
|
|
163
156
|
end
|
164
157
|
|
165
158
|
end
|
166
|
-
end
|
159
|
+
end
|
data/lib/kilt_object.rb
ADDED