etherpad-lite 0.0.3 → 0.0.4
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/CHANGELOG +4 -0
- data/README.rdoc +54 -8
- data/lib/etherpad-lite/models/pad.rb +1 -0
- data/spec/pad_spec.rb +6 -3
- metadata +3 -3
data/CHANGELOG
CHANGED
data/README.rdoc
CHANGED
@@ -32,16 +32,61 @@ See https://github.com/Pita/etherpad-lite for information on how to install and
|
|
32
32
|
puts pad_rev.text
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
Read the full docs at http://jordanhollinger.com/docs/ruby-etherpad-lite/.
|
36
36
|
|
37
|
-
== 3
|
38
|
-
|
39
|
-
|
37
|
+
== 3 Example use in Rails
|
38
|
+
For your view, I recommend the jQuery plugin at https://github.com/johnyma22/etherpad-lite-jquery-plugin.
|
39
|
+
|
40
|
+
Add the following to your Gemfile
|
41
|
+
gem 'etherpad-lite'
|
42
|
+
|
43
|
+
On login, create a Hash in your session to store EtherpadLite API sessions:
|
44
|
+
session[:ep_sessions] = {}
|
45
|
+
|
46
|
+
Some example controller actions:
|
47
|
+
|
48
|
+
class EtherpadController < ApplicationController
|
49
|
+
def index
|
50
|
+
# The idea is that your users are probably members of some kind of groups.
|
51
|
+
# These groups can be mapped to EtherpadLite Groups. List all the user's groups.
|
52
|
+
@app_groups = current_user.groups
|
53
|
+
end
|
40
54
|
|
41
|
-
|
42
|
-
|
55
|
+
def group
|
56
|
+
ether = EtherpadLite.connect(:local, 'api key')
|
57
|
+
@app_group = YourAppGroup.find(params[:id])
|
58
|
+
# Map your app's group to an EtherpadLite Group
|
59
|
+
group = ether.group("my_app_group_#{@app_group.id}")
|
60
|
+
# List all the pads in group
|
61
|
+
@pads = group.pads
|
62
|
+
end
|
63
|
+
|
64
|
+
def pad
|
65
|
+
ether = EtherpadLite.connect(:local, 'api key')
|
66
|
+
# Get the EtherpadLite Group by id
|
67
|
+
@group = ether.get_group(params[:group_id])
|
68
|
+
# Get the pad
|
69
|
+
@pad = @group.pad(params[:pad_name])
|
70
|
+
# Map the user to an EtherpadLite Author
|
71
|
+
author = ether.author("my_app_user_#{current_user.id}", :name => current_user.name)
|
72
|
+
# Get or create an hour-long session for this Author in this Group
|
73
|
+
sess = session[:ep_sessions][@group.id] ? ether.get_session(session[:ep_sessions][@group.id]) : @group.create_session(author, 60)
|
74
|
+
if sess.expired?
|
75
|
+
sess.delete
|
76
|
+
sess = @group.create_session(author, 60)
|
77
|
+
end
|
78
|
+
session[:ep_sessions][@group.id] = sess.id
|
79
|
+
# Set the EtherpadLite session cookie. This will automatically be picked up by the jQuery plugin's iframe.
|
80
|
+
cookies[:sessionID] = {:value => sess.id, :domain => ".yourdomain.com"}
|
81
|
+
end
|
82
|
+
end
|
43
83
|
|
44
|
-
|
84
|
+
== 4 Why is the Ruby client so different from the others? What gives you the right?!?
|
85
|
+
The PHP and Python clients are extremely thin wrappers around the HTTP API; their method names map directly to urls. The Ruby client offers a slightly higher level of abstration,
|
86
|
+
with the goal of making Etherpad Lite integration in Ruby projects as simple, poweful, and dare I say fun, as possible. That said, there is nothing wrong with the thinly-wrapped API.
|
87
|
+
So in the interests of being a good citizen, the Ruby client is written in two layers, one conforming to the other clients, and a higher-level "models" API riding on top of it.
|
88
|
+
|
89
|
+
In the examples above, the "standard" client can be accessed with
|
45
90
|
client = ether.client
|
46
91
|
client.getText('my first etherpad lite pad')
|
47
92
|
=> {:text => "What hath God wrought?"}
|
@@ -50,8 +95,9 @@ Or you can explicitly load only the standard client
|
|
50
95
|
require 'etherpad-lite/client'
|
51
96
|
client = EtherpadLite::Client.new('api key', 'http://beta.etherpad.org/api')
|
52
97
|
|
53
|
-
==
|
98
|
+
== 5 License
|
54
99
|
Copyright 2011 Jordan Hollinger
|
100
|
+
|
55
101
|
Licensed under the Apache License
|
56
102
|
|
57
103
|
== 5 Credit
|
data/spec/pad_spec.rb
CHANGED
@@ -69,9 +69,12 @@ describe EtherpadLite::Pad do
|
|
69
69
|
pad.name.should == pad.id
|
70
70
|
end
|
71
71
|
|
72
|
-
it "should be initialized as revision
|
73
|
-
pad = @eth.
|
74
|
-
pad.text
|
72
|
+
it "should be initialized as revision 0" do
|
73
|
+
pad = @eth.pad 'brand new pad', :text => 'Brand new text'
|
74
|
+
pad.text = 'Even newer text'
|
75
|
+
pad.text = 'Even even newer text'
|
76
|
+
pad = @eth.get_pad 'brand new pad', :rev => 0
|
77
|
+
pad.text.should == "Brand new text\n"
|
75
78
|
end
|
76
79
|
|
77
80
|
it "should be deleted" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jordan Hollinger
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-09-
|
17
|
+
date: 2011-09-12 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|