meteorite 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Meteorite
2
2
 
3
3
  Meteorite enables you to add two-way data binding to your application with minimal effort.
4
+ For an example application, please see https://github.com/llawlor/meteorite-simple-todos .
4
5
 
5
6
  ## Dependencies
6
7
 
@@ -8,11 +9,11 @@ You need Redis installed and running for Meteorite to work properly.
8
9
 
9
10
  Install Redis server (on Ubuntu):
10
11
 
11
- sudo apt-get install redis-server
12
+ $ sudo apt-get install redis-server
12
13
 
13
14
  Run Redis server:
14
15
 
15
- nohup redis-server &
16
+ $ nohup redis-server &
16
17
 
17
18
  ## Installation
18
19
 
@@ -28,19 +29,30 @@ Install required files:
28
29
 
29
30
  $ rails generate meteorite:install
30
31
 
32
+ [(view diff)](https://github.com/llawlor/meteorite-tasks-example/commit/adb20f19b8bd6034ea6ef81a4618f359e9b93222)
33
+
31
34
  The generated JavaScript file needs to be added to the assets pipeline. In app/assets/javascripts/application.js, add this line:
32
35
 
33
36
  //= require meteorite
34
37
 
38
+ [(view diff)](https://github.com/llawlor/meteorite-tasks-example/commit/c7b82339822a6af62548af96adc0374ebb9fa12f)
39
+
35
40
  Run the websocket daemon:
36
41
 
37
- ruby daemons/websocket.rb
42
+ $ ruby daemons/websocket.rb
43
+
44
+ The Redis server location can be configured at config/initializers/meteorite.rb .
38
45
 
39
46
  ## Example Usage in a Task Model
40
47
 
41
48
  ### Create a task:
42
- task_controller#create
49
+
50
+ First, we publish a message to Redis with a key of 'tasks' and a value equal to the task's partial.
51
+ Meteorite.bind_key(MODEL_NAME.all) will use the table name as the key to bind messages to.
52
+
43
53
  ```ruby
54
+ # task_controller#create
55
+
44
56
  # create the task
45
57
  task = Task.create(task_params)
46
58
  # render the partial to a string
@@ -49,8 +61,11 @@ task_string = render_to_string(partial: 'task', locals: { task: task })
49
61
  $redis.publish(Meteorite.bind_key(Task.all), task_string)
50
62
  ```
51
63
 
52
- tasks/index.html.erb
64
+ An HTML element with a class of "meteorite" and data attribute for the bind key is used to specify where additional model instances will be added to the DOM.
65
+
53
66
  ```html
67
+ <!-- tasks/index.html.erb -->
68
+
54
69
  <table class="meteorite" data-bind-key="<%= Meteorite.bind_key(@tasks) %>">
55
70
  <% @tasks.each do |task| %>
56
71
  <%= render partial: 'task', locals: { task: task } %>
@@ -58,32 +73,56 @@ tasks/index.html.erb
58
73
  </table>
59
74
  ```
60
75
 
61
- tasks/_task.html.erb
76
+ The partial should have a top-level element with an ID of the model instance's bind key.
77
+ Individual HTML attributes can be dynamically updated by adding a "meteorite" class, data-bind-key, and data-bind-attr.
78
+
62
79
  ```html
63
- <%= form_for task do |f| %>
64
- <label>
65
- <%= f.check_box :checked, class: 'meteorite', data: { bind_key: Meteorite.bind_key(task), bind_attr: 'checked' } %>
66
- <%= task.text %>
67
- </label>
80
+ <!-- tasks/_task.html.erb -->
81
+
82
+ <tr id="<%= Meteorite.bind_key(task) %>">
83
+ <td>
84
+ <%= form_for task, remote: true, html: { style: 'float: left; margin-right: 5px;' } do |f| %>
85
+ <label>
86
+ <%= f.check_box :checked, class: 'task_check meteorite', data: { bind_key: Meteorite.bind_key(task), bind_attr: 'checked' } %>
87
+ <span class="checkbox_text <%= 'checked' if task.checked?%>"><%= task.text %></span>
88
+ </label>
89
+ <% end %>
90
+
91
+ <%= link_to raw("&times;"), task, method: 'delete', data: { remote: true }, class: 'pull-right' %>
92
+ </td>
93
+ </tr>
68
94
  <% end %>
69
95
  ```
70
96
 
97
+ [(view diff)](https://github.com/llawlor/meteorite-tasks-example/commit/9440626fdc14af5e84066eef60fabf3e99fcfd93)
98
+
71
99
  ### Update a task:
72
- tasks_controller#update
100
+
101
+ Updates can be performed by publishing the model instance's bind key and the model instance to JSON.
102
+
73
103
  ```ruby
104
+ # tasks_controller#update
105
+
74
106
  # use the $redis.publish method to send your bind_key and task as JSON
75
107
  task = Task.find(params[:id])
76
108
  $redis.publish(Meteorite.bind_key(task), task.to_json)
77
109
  ```
78
110
 
111
+ [(view diff)](https://github.com/llawlor/meteorite-tasks-example/commit/f5a4e21b4b24173c7a4832d954567b616d685b4c)
112
+
79
113
  ### Delete a task:
80
- tasks_controller#destroy
114
+
115
+ Model instances can be deleted by publishing the model instance's bind key and the 'delete' message.
116
+
81
117
  ```ruby
118
+ # tasks_controller#destroy
119
+
82
120
  # use the $redis.publish method to send your bind_key and 'delete' message
83
121
  task = Task.find(params[:id])
84
122
  $redis.publish(Meteorite.bind_key(task), 'delete')
85
123
  ```
86
124
 
125
+ [(view diff)](https://github.com/llawlor/meteorite-tasks-example/commit/abfb76d11b3cb422ee4d37aaf8b9364823a2b0bf)
87
126
 
88
127
  ## Contributing
89
128
 
@@ -2,7 +2,7 @@
2
2
  var Meteorite = Meteorite || {};
3
3
 
4
4
  // initialize websocket
5
- Meteorite.websocket = new WebSocket("ws://192.168.56.101:8080/");
5
+ Meteorite.websocket = new WebSocket("ws://" + location.hostname + ":8080/");
6
6
 
7
7
  console.log('starting meteorite websockets. . .');
8
8
 
@@ -1,3 +1,3 @@
1
1
  module Meteorite
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,97 +1,110 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meteorite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - llawlor
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-06-26 00:00:00.000000000 Z
12
+ date: 2015-07-02 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.3'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.3'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: em-websocket
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: em-hiredis
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - ">="
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - ">="
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '0'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: redis
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - ">="
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - ">="
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: railties
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - ">="
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :runtime
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - ">="
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  description: Uses websockets to update HTML pages automatically when the underlying
@@ -102,7 +115,7 @@ executables: []
102
115
  extensions: []
103
116
  extra_rdoc_files: []
104
117
  files:
105
- - ".gitignore"
118
+ - .gitignore
106
119
  - Gemfile
107
120
  - LICENSE.txt
108
121
  - README.md
@@ -119,25 +132,26 @@ files:
119
132
  homepage: ''
120
133
  licenses:
121
134
  - MIT
122
- metadata: {}
123
135
  post_install_message:
124
136
  rdoc_options: []
125
137
  require_paths:
126
138
  - lib
127
139
  required_ruby_version: !ruby/object:Gem::Requirement
140
+ none: false
128
141
  requirements:
129
- - - ">="
142
+ - - ! '>='
130
143
  - !ruby/object:Gem::Version
131
144
  version: '0'
132
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
133
147
  requirements:
134
- - - ">="
148
+ - - ! '>='
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
151
  requirements: []
138
152
  rubyforge_project:
139
- rubygems_version: 2.4.6
153
+ rubygems_version: 1.8.23
140
154
  signing_key:
141
- specification_version: 4
155
+ specification_version: 3
142
156
  summary: Two-way data binding for Rails
143
157
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: b3f52eccbd85f2408b28c8a2acb0dabdab2eb93b
4
- data.tar.gz: d8ebb4b1153e0b8764ba678f08f7c2510ac138ef
5
- SHA512:
6
- metadata.gz: edc2773a003260faba62a75b9728afbb5de580aa2a1528302bcf48bba677c7105c23a773f7b94f9f5df1717955d157108fa44f8d2478381ffdc52ac0df9b1578
7
- data.tar.gz: 32cb165eff72479b076842bf3057e2af5b0fa096a0c9c5dae96a1f671f3bcc2d85f91ae66a6ba3dfaf85774807b349cbbaa63fb38c0bbe128c20e5c9239e42a0