meteorite 0.1.0 → 0.1.1

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.
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