databound 0.2.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc120402dc3597810b2c3287923e38b866ec3cd4
4
- data.tar.gz: f67f1667a90604c4d73e954ec0347a9f5c7b248f
3
+ metadata.gz: 3e9250396be3c8b5dd3329f0a840c37711889491
4
+ data.tar.gz: 82e2e65d820a8b51088cbf72cd9f9b54b74748bd
5
5
  SHA512:
6
- metadata.gz: c4952ab9c69bed7a162d02f8bd1a3f15216cadb468c885c33694568b5255675ccdf0835a9365725304b4e50abb37ad20fe6e48021cdbcb58f55cec4e48a79316
7
- data.tar.gz: 79fb642e6fcf2253f4d27e6011efb5d00ae0d94469ee9242f8d5fc4aed2b455aeeda7db7efec5d5b38599930e73aacb167ab823d1d08771b5ce06f7ba76ad370
6
+ metadata.gz: c8b2f5ac35c2bf731f3284ada7f079ce76dc89966361df2db74596549a85d635d08655d5b444c74221c87b3d7f975e7a0d2eb3293a44a7fdcdd5501d553ab1a5
7
+ data.tar.gz: 97238b8ccf2f8f0004b447704d68f10ec7f86657cd82bb2a586b25f9a509934c126c6aa67c546d486714ca57e53199e88ede49dfcbf16ec1cd68d54ef3e141d1
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "lib/generators/databound/install/templates/js"]
2
+ path = lib/generators/databound/install/templates/js
3
+ url = https://github.com/Nedomas/databound.git
data/README.md CHANGED
@@ -1,63 +1,35 @@
1
- [![Code Climate](https://codeclimate.com/github/Nedomas/databound-rails/badges/gpa.svg)](https://codeclimate.com/github/Nedomas/databound-rails)
2
1
  [![Gem Version](https://badge.fury.io/rb/databound.svg)](http://badge.fury.io/rb/databound)
3
- [![Build Status](https://travis-ci.org/Nedomas/databound-rails.svg?branch=master)](https://travis-ci.org/Nedomas/databound-rails)
4
- [![Dependency Status](https://gemnasium.com/Nedomas/databound-rails.svg)](https://gemnasium.com/Nedomas/databound-rails)
2
+ [![Bower version](https://badge.fury.io/bo/databound.svg)](http://badge.fury.io/bo/databound)
3
+ [![NPM version](https://badge.fury.io/js/databound.svg)](http://badge.fury.io/js/databound)
4
+ [![Code Climate](https://codeclimate.com/github/Nedomas/databound/badges/gpa.svg)](https://codeclimate.com/github/Nedomas/databound)
5
+ [![Build Status](https://travis-ci.org/Nedomas/databound.svg)](https://travis-ci.org/Nedomas/databound)
5
6
 
6
7
  ![Databound](https://cloud.githubusercontent.com/assets/1877286/4743542/df89dcec-5a28-11e4-9114-6f383fe269cb.png)
7
8
 
8
- Exposes database ORM to the Javascript side.
9
+ Exposes Ruby on Rails database to the Javascript side.
9
10
 
10
- Ruby on Rails backend for the Databound javascript lib. Supports ActiveRecord and Mongoid
11
+ This repo is for Ruby on Rails backend part of Databound.
11
12
 
12
- For more information go to [javascript Databound repo](https://github.com/Nedomas/databound).
13
+ **Check out live examples on the Databound website** [databound.me](http://databound.me).
13
14
 
14
- ## Javascript library
15
+ **You can also check out the javascript** [Databound repo](https://github.com/Nedomas/databound).
15
16
 
16
- Out of the box it does something like this.
17
+ ## Usage
17
18
 
18
19
  ```js
19
- User = new Databound('/users');
20
+ User = new Databound('/users')
20
21
 
21
- User.update({ id: 15, name: 'Saint John' }).then(function(updated_user) {
22
+ User.where({ name: 'John' }).then(function(users) {
23
+ alert('Users called John');
22
24
  });
23
- ```
24
-
25
- ## Installation
26
-
27
- The library has two parts and has Lodash as a dependency.
28
-
29
- #### I. Javascript part
30
-
31
- Follow the guide on [javascript Databound repo](https://github.com/Nedomas/databound).
32
-
33
- #### II. Ruby on Rails part
34
-
35
- **1.** Add ``gem 'databound'`` to ``Gemfile``.
36
-
37
- **2.** Create a controller with method ``model`` which returns the model to be accessed.
38
- Also include ``Databound``
39
25
 
40
- ```ruby
41
- class UsersController < ApplicationController
42
- include Databound
43
-
44
- private
45
-
46
- def model
47
- User
48
- end
49
- end
50
- ```
51
-
52
- **3.** Add a route to ``routes.rb``
53
-
54
- ```ruby
55
- # This creates POST routes on /users to UsersController
56
- # For where, create, update, destroy
26
+ User.find(15).then(function(user) {
27
+ print('User no. 15: ' + user.name);
28
+ });
57
29
 
58
- databound :users
30
+ User.create({ name: 'Peter' }).then(function(user) {
31
+ print('I am ' + user.name + ' from database');
32
+ });
59
33
  ```
60
34
 
61
- ## Additional features
62
-
63
- All features are described in [javascript Databound repo](https://github.com/Nedomas/databound).
35
+ [More API docs](http://nedomas.github.io/databound/src/databound.html)
data/databound.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Databound::VERSION
9
9
  spec.authors = ['Domas Bitvinskas']
10
10
  spec.email = ['domas.bitvinskas@me.com']
11
- spec.summary = %q{Exposes database ORM to the Javascript side}
12
- spec.description = %q{Ruby on Rails backend for the Databound javascript lib. Supports ActiveRecord and Mongoid}
11
+ spec.summary = %q{Databound exposes Ruby on Rails database to the Javascript side}
12
+ spec.description = %q{Works with ActiveRecord and Mongoid out of the box}
13
13
  spec.homepage = 'https://github.com/Nedomas/databound'
14
14
  spec.license = 'MIT'
15
15
 
@@ -7,12 +7,12 @@ module Databound
7
7
 
8
8
  scope_js = controller.params[:scope]
9
9
  data_js = controller.params[:data]
10
- extra_find_scopes_js = controller.params[:extra_find_scopes] || '[]'
10
+ extra_where_scopes_js = controller.params[:extra_where_scopes] || '[]'
11
11
 
12
12
  @scope = Databound::Data.new(controller, scope_js)
13
13
  @data = Databound::Data.new(controller, data_js).to_h
14
14
 
15
- @extra_find_scopes = JSON.parse(extra_find_scopes_js).map do |extra_scope|
15
+ @extra_where_scopes = JSON.parse(extra_where_scopes_js).map do |extra_scope|
16
16
  Databound::Data.new(controller, extra_scope)
17
17
  end
18
18
  end
@@ -21,7 +21,7 @@ module Databound
21
21
  records = []
22
22
  records << @scope.records(@model)
23
23
 
24
- @extra_find_scopes.each do |extra_scope|
24
+ @extra_where_scopes.each do |extra_scope|
25
25
  records << extra_scope.records(@model)
26
26
  end
27
27
 
@@ -9,12 +9,12 @@ module Databound
9
9
  resource.to_s.classify.constantize
10
10
  end
11
11
 
12
- Object.const_set(name(path), controller)
12
+ Object.const_set(controller_name(path), controller)
13
13
  end
14
14
 
15
15
  def self.exists?(path)
16
16
  begin
17
- name(path).constantize
17
+ controller_name(path).constantize
18
18
  rescue NameError
19
19
  return false
20
20
  end
@@ -22,7 +22,7 @@ module Databound
22
22
  true
23
23
  end
24
24
 
25
- def self.name(path)
25
+ def self.controller_name(path)
26
26
  "#{path.camelize}Controller"
27
27
  end
28
28
  end
@@ -1,3 +1,3 @@
1
1
  module Databound
2
- VERSION = '0.2.1'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -0,0 +1,27 @@
1
+ require 'rails/generators'
2
+
3
+ module Databound
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __FILE__)
7
+ desc 'This generator adds Databound to the asset pipeline'
8
+
9
+ def add_assets
10
+ js_manifest = 'app/assets/javascripts/application.js'
11
+ coffee_manifest = 'app/assets/javascripts/application.coffee'
12
+
13
+ if File.exist?(js_manifest)
14
+ insert_into_file js_manifest, "//= require databound\n", after: "jquery_ujs\n"
15
+ elsif File.exist?(coffee_manifest)
16
+ insert_into_file coffee_manifest, "#= require databound\n", after: "jquery_ujs\n"
17
+ else
18
+ copy_file 'application.js', js_manifest
19
+ end
20
+ end
21
+
22
+ def add_databound
23
+ copy_file 'js/dist/databound-standalone.js', 'vendor/assets/javascripts/databound.js'
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require databound
10
+ //= require_tree .
@@ -8,7 +8,6 @@ describe UsersController, type: :controller do
8
8
  name: 'John',
9
9
  },
10
10
  scope: {},
11
- extra_find_scopes: [],
12
11
  }
13
12
 
14
13
  post(:create, javascriptize(data))
@@ -42,7 +41,6 @@ describe UsersController, type: :controller do
42
41
  city: 'Los Angeles',
43
42
  },
44
43
  scope: {},
45
- extra_find_scopes: [],
46
44
  }
47
45
 
48
46
  post(:where, javascriptize(data))
@@ -55,7 +53,6 @@ describe UsersController, type: :controller do
55
53
  city: 'New York',
56
54
  },
57
55
  scope: {},
58
- extra_find_scopes: [],
59
56
  }
60
57
 
61
58
  post(:where, javascriptize(data))
@@ -76,7 +73,6 @@ describe UsersController, type: :controller do
76
73
  city: 'Moved to Los Angeles',
77
74
  },
78
75
  scope: {},
79
- extra_find_scopes: [],
80
76
  }
81
77
 
82
78
  post(:update, javascriptize(data))
@@ -101,7 +97,6 @@ describe UsersController, type: :controller do
101
97
  city: 'Moved to Los Angeles',
102
98
  },
103
99
  scope: {},
104
- extra_find_scopes: [],
105
100
  }
106
101
 
107
102
  expect { post(:update, javascriptize(data)) }.to raise_error(ActiveRecord::RecordNotFound)
@@ -120,7 +115,6 @@ describe UsersController, type: :controller do
120
115
  id: @user.id,
121
116
  },
122
117
  scope: {},
123
- extra_find_scopes: [],
124
118
  }
125
119
 
126
120
  post(:destroy, javascriptize(data))
@@ -140,7 +134,6 @@ describe UsersController, type: :controller do
140
134
  id: 2,
141
135
  },
142
136
  scope: {},
143
- extra_find_scopes: [],
144
137
  }
145
138
 
146
139
  expect { post(:update, javascriptize(data)) }.to raise_error(ActiveRecord::RecordNotFound)
@@ -11,7 +11,6 @@ describe DslController, type: :controller do
11
11
  city: 'hottest',
12
12
  },
13
13
  scope: {},
14
- extra_find_scopes: [],
15
14
  }
16
15
 
17
16
  post(:create, javascriptize(data))
@@ -45,7 +44,6 @@ describe DslController, type: :controller do
45
44
  city: 'coldest',
46
45
  },
47
46
  scope: {},
48
- extra_find_scopes: [],
49
47
  }
50
48
 
51
49
  post(:create, javascriptize(data))
@@ -80,7 +78,6 @@ describe DslController, type: :controller do
80
78
  city: 'New York',
81
79
  },
82
80
  scope: {},
83
- extra_find_scopes: [],
84
81
  }
85
82
 
86
83
  expect { post(:create, javascriptize(data)) }.to raise_error(
@@ -104,7 +101,6 @@ describe DslController, type: :controller do
104
101
  city: 'hottest',
105
102
  },
106
103
  scope: {},
107
- extra_find_scopes: [],
108
104
  }
109
105
 
110
106
  post(:update, javascriptize(data))
@@ -141,7 +137,6 @@ describe DslController, type: :controller do
141
137
  city: 'coldest',
142
138
  },
143
139
  scope: {},
144
- extra_find_scopes: [],
145
140
  }
146
141
 
147
142
  post(:update, javascriptize(data))
@@ -179,7 +174,6 @@ describe DslController, type: :controller do
179
174
  city: 'New York',
180
175
  },
181
176
  scope: {},
182
- extra_find_scopes: [],
183
177
  }
184
178
 
185
179
  expect { post(:create, javascriptize(data)) }.to raise_error(
@@ -9,7 +9,6 @@ describe LooseDslController, type: :controller do
9
9
  city: 'hottest',
10
10
  },
11
11
  scope: {},
12
- extra_find_scopes: [],
13
12
  }
14
13
 
15
14
  post(:create, javascriptize(data))
@@ -43,7 +42,6 @@ describe LooseDslController, type: :controller do
43
42
  city: 'New York',
44
43
  },
45
44
  scope: {},
46
- extra_find_scopes: [],
47
45
  }
48
46
 
49
47
  post(:create, javascriptize(data))
@@ -79,7 +77,6 @@ describe LooseDslController, type: :controller do
79
77
  city: 'hottest',
80
78
  },
81
79
  scope: {},
82
- extra_find_scopes: [],
83
80
  }
84
81
 
85
82
  post(:update, javascriptize(data))
@@ -115,7 +112,6 @@ describe LooseDslController, type: :controller do
115
112
  city: 'Los Angeles',
116
113
  },
117
114
  scope: {},
118
- extra_find_scopes: [],
119
115
  }
120
116
 
121
117
  post(:update, javascriptize(data))
@@ -9,7 +9,6 @@ describe MessagesController, type: :controller do
9
9
  city: 'Prague',
10
10
  },
11
11
  scope: {},
12
- extra_find_scopes: [],
13
12
  }
14
13
 
15
14
  post(:create, javascriptize(data))
@@ -8,7 +8,6 @@ describe PermittedColumnsController, type: :controller do
8
8
  city: 'Barcelona',
9
9
  },
10
10
  scope: {},
11
- extra_find_scopes: [],
12
11
  }
13
12
 
14
13
  expect { post(:create, javascriptize(data)) }.to raise_error(
@@ -23,7 +22,6 @@ describe PermittedColumnsController, type: :controller do
23
22
  name: 'Nikki',
24
23
  },
25
24
  scope: {},
26
- extra_find_scopes: [],
27
25
  }
28
26
 
29
27
  expect { post(:create, javascriptize(data)) }.not_to raise_error
@@ -42,7 +40,6 @@ describe PermittedColumnsController, type: :controller do
42
40
  city: 'Barcelona',
43
41
  },
44
42
  scope: {},
45
- extra_find_scopes: [],
46
43
  }
47
44
 
48
45
  expect { post(:update, javascriptize(data)) }.to raise_error(
@@ -58,7 +55,6 @@ describe PermittedColumnsController, type: :controller do
58
55
  name: 'Nikki',
59
56
  },
60
57
  scope: {},
61
- extra_find_scopes: [],
62
58
  }
63
59
 
64
60
  expect { post(:update, javascriptize(data)) }.not_to raise_error
@@ -73,7 +69,6 @@ describe PermittedColumnsController, type: :controller do
73
69
  name: 'Nikki',
74
70
  },
75
71
  scope: { city: 'Barcelona' },
76
- extra_find_scopes: [],
77
72
  }
78
73
 
79
74
  expect { post(:create, javascriptize(data)) }.to raise_error(
@@ -91,7 +86,6 @@ describe PermittedColumnsController, type: :controller do
91
86
  name: 'Nikki',
92
87
  },
93
88
  scope: { city: 'Barcelona' },
94
- extra_find_scopes: [],
95
89
  }
96
90
 
97
91
  expect { post(:update, javascriptize(data)) }.to raise_error(
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: databound
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domas Bitvinskas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-18 00:00:00.000000000 Z
11
+ date: 2015-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-rails
@@ -122,8 +122,7 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '10.0'
125
- description: Ruby on Rails backend for the Databound javascript lib. Supports ActiveRecord
126
- and Mongoid
125
+ description: Works with ActiveRecord and Mongoid out of the box
127
126
  email:
128
127
  - domas.bitvinskas@me.com
129
128
  executables: []
@@ -131,6 +130,7 @@ extensions: []
131
130
  extra_rdoc_files: []
132
131
  files:
133
132
  - ".gitignore"
133
+ - ".gitmodules"
134
134
  - ".travis.yml"
135
135
  - Gemfile
136
136
  - LICENSE.txt
@@ -145,6 +145,8 @@ files:
145
145
  - lib/databound/rails/routes.rb
146
146
  - lib/databound/utils.rb
147
147
  - lib/databound/version.rb
148
+ - lib/generators/databound/install/install_generator.rb
149
+ - lib/generators/databound/install/templates/application.js
148
150
  - spec/controllers/databound_spec.rb
149
151
  - spec/controllers/dsl_controller_spec.rb
150
152
  - spec/controllers/loose_dsl_controller_spec.rb
@@ -238,7 +240,7 @@ rubyforge_project:
238
240
  rubygems_version: 2.2.2
239
241
  signing_key:
240
242
  specification_version: 4
241
- summary: Exposes database ORM to the Javascript side
243
+ summary: Databound exposes Ruby on Rails database to the Javascript side
242
244
  test_files:
243
245
  - spec/controllers/databound_spec.rb
244
246
  - spec/controllers/dsl_controller_spec.rb
@@ -310,4 +312,3 @@ test_files:
310
312
  - spec/support/rails_test_app/public/robots.txt
311
313
  - spec/support/rails_test_app/vendor/assets/javascripts/.keep
312
314
  - spec/support/rails_test_app/vendor/assets/stylesheets/.keep
313
- has_rdoc: