bigbluebutton_rails 1.3.0 → 1.4.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.rspec +2 -2
- data/.ruby-version +1 -1
- data/CHANGELOG.rdoc +31 -6
- data/Gemfile +13 -3
- data/Gemfile.lock +88 -42
- data/README.rdoc +84 -15
- data/Rakefile +22 -25
- data/{TODO_08 → TODO.rdoc} +6 -2
- data/app/assets/images/badges/apple_store_en.png +0 -0
- data/app/assets/images/badges/apple_store_pt-br.png +0 -0
- data/app/assets/images/badges/google_play_en.png +0 -0
- data/app/assets/images/badges/google_play_pt-br.png +0 -0
- data/app/controllers/bigbluebutton/recordings_controller.rb +25 -10
- data/app/controllers/bigbluebutton/rooms_controller.rb +158 -141
- data/app/controllers/bigbluebutton/servers_controller.rb +25 -12
- data/app/helpers/bigbluebutton_rails_helper.rb +20 -0
- data/app/models/bigbluebutton_meeting.rb +28 -0
- data/app/models/bigbluebutton_metadata.rb +2 -2
- data/app/models/bigbluebutton_playback_format.rb +2 -2
- data/app/models/bigbluebutton_recording.rb +29 -4
- data/app/models/bigbluebutton_room.rb +153 -22
- data/app/models/bigbluebutton_room_options.rb +46 -0
- data/app/models/bigbluebutton_server.rb +4 -2
- data/app/views/bigbluebutton/recordings/_form.html.erb +4 -0
- data/app/views/bigbluebutton/recordings/_recordings.html.erb +1 -0
- data/app/views/bigbluebutton/recordings/show.html.erb +5 -0
- data/app/views/bigbluebutton/rooms/join_mobile.html.erb +29 -5
- data/app/workers/bigbluebutton_meeting_updater.rb +31 -0
- data/bigbluebutton_rails.gemspec +5 -1
- data/config/locales/en.yml +6 -5
- data/config/schedule.rb +4 -0
- data/lib/bigbluebutton_rails/controller_methods.rb +29 -10
- data/lib/bigbluebutton_rails/internal_controller_methods.rb +56 -0
- data/lib/bigbluebutton_rails/rails/routes.rb +1 -5
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/lib/bigbluebutton_rails.rb +11 -0
- data/lib/generators/bigbluebutton_rails/templates/migration.rb +28 -0
- data/lib/generators/bigbluebutton_rails/templates/migration_1_4_0.rb +37 -0
- data/lib/tasks/bigbluebutton_rails/meetings.rake +22 -0
- data/lib/tasks/bigbluebutton_rails/recordings.rake +2 -1
- data/spec/classes/bigbluebutton_attendee_spec.rb +1 -1
- data/spec/controllers/bigbluebutton/recordings_controller_json_responses_spec.rb +10 -9
- data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +103 -16
- data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +15 -5
- data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +17 -12
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +485 -432
- data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +20 -13
- data/spec/controllers/bigbluebutton/servers_controller_spec.rb +174 -16
- data/spec/factories/bigbluebutton_meeting.rb +13 -0
- data/spec/factories/bigbluebutton_recording.rb +4 -2
- data/spec/factories/bigbluebutton_room.rb +5 -1
- data/spec/factories/bigbluebutton_room_options.rb +6 -0
- data/spec/generators/install_generator_spec.rb +1 -1
- data/spec/generators/views_generator_spec.rb +0 -1
- data/spec/lib/tasks/meetings_rake_spec.rb +5 -0
- data/spec/lib/tasks/recordings_rake_spec.rb +5 -0
- data/spec/models/bigbluebutton_meeting_db_spec.rb +24 -0
- data/spec/models/bigbluebutton_meeting_spec.rb +52 -0
- data/spec/models/bigbluebutton_metadata_db_spec.rb +2 -0
- data/spec/models/bigbluebutton_metadata_spec.rb +18 -22
- data/spec/models/bigbluebutton_playback_format_db_spec.rb +2 -0
- data/spec/models/bigbluebutton_playback_format_spec.rb +0 -4
- data/spec/models/bigbluebutton_recording_db_spec.rb +3 -0
- data/spec/models/bigbluebutton_recording_spec.rb +69 -16
- data/spec/models/bigbluebutton_room_db_spec.rb +2 -0
- data/spec/models/bigbluebutton_room_options_db_spec.rb +16 -0
- data/spec/models/bigbluebutton_room_options_spec.rb +206 -0
- data/spec/models/bigbluebutton_room_spec.rb +420 -80
- data/spec/models/bigbluebutton_server_db_spec.rb +2 -0
- data/spec/models/bigbluebutton_server_spec.rb +22 -24
- data/spec/rails_app/config/application.rb +3 -0
- data/spec/rails_app/config/database.yml.example +28 -0
- data/spec/rails_app/config/environments/test.rb +1 -1
- data/spec/rails_app/db/seeds.rb +1 -0
- data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +0 -2
- data/spec/rails_app/features/step_definitions/common_steps.rb +6 -0
- data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +0 -6
- data/spec/rails_app/features/support/locales.rb +4 -2
- data/spec/rails_app/features/support/paths.rb +0 -2
- data/spec/rails_app/features/support/templates.rb +2 -17
- data/spec/rails_app/lib/tasks/db/populate.rake +2 -0
- data/spec/rails_app/lib/tasks/resque.rake +3 -0
- data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +1 -10
- data/spec/routing/bigbluebutton/rooms_only_routing_spec.rb +1 -9
- data/spec/routing/bigbluebutton/rooms_routing_spec.rb +3 -31
- data/spec/spec_helper.rb +40 -24
- data/spec/support/matchers/array_with_key.rb +7 -0
- data/spec/support/matchers/array_without_key.rb +7 -0
- data/spec/support/matchers/delegate_matcher.rb +62 -0
- data/spec/support/matchers/respond_with_content_type.rb +8 -0
- data/spec/support/matchers/shoulda/assign_to_matcher.rb +131 -0
- data/spec/support/mocked_server.rb +2 -2
- data/spec/support/models/user.rb +11 -0
- data/spec/workers/bigbluebutton_meeting_updater_spec.rb +9 -0
- metadata +86 -16
- data/app/views/bigbluebutton/rooms/external.html.erb +0 -25
- data/spec/rails_app/config/database.yml +0 -25
- data/spec/rails_app/features/join_external_rooms.feature +0 -61
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
--format
|
2
|
-
--color
|
1
|
+
--format documentation
|
2
|
+
--color
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.9.3-
|
1
|
+
1.9.3-p484
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,16 +1,41 @@
|
|
1
|
+
== 1.4.0 (in development)
|
2
|
+
|
3
|
+
To learn how to migrate to 1.4.0 see: https://github.com/mconf/bigbluebutton_rails/wiki/Migrate-to-1.4.0
|
4
|
+
|
5
|
+
* New dependencies:
|
6
|
+
* resque: To keep track of meetings that happened.
|
7
|
+
* strong_parameters: To allow controllers to decide which parameters can be modified and which can't. Default in Rails 4, should also be used in Rails 3.
|
8
|
+
* With strong_parameters in all controllers now the application can decide which parameters can be accessed and which can't. You can have different logics for different types of users.
|
9
|
+
* Use <tt>params[:redir_url]</tt> (if present) to redirect the user to a custom URL in all actions where possible. This can be set by the application to redirect the user to a custom location after updating a model, for instance.
|
10
|
+
* Register meetings that happened: new model <tt>BigbluebuttonMeeting</tt> that stores instances of meetings that happened in a room. Uses resque to monitor when meetings started. They are also associated with recordings, so the application can show a registry of meetings that happened and their respective recording.
|
11
|
+
* MySQL as a default database (was sqlite).
|
12
|
+
* First logic layout to set a custom config.xml when joining a room:
|
13
|
+
* Every room has an associated BigbluebuttonRoomOptions model;
|
14
|
+
* This model contains custom options that will be set in the config.xml when a user joins the associated room;
|
15
|
+
* When the user joins, the library will get the default config.xml from the server, modify it according to the BigbluebuttonRoomOptions, and set it on the server to use it in the <tt>join</tt> API call;
|
16
|
+
* Currently the only parameters that can be customized are: <tt>default layout</tt>, <tt>presenter_share_only</tt>, <tt>auto_start_audio</tt>, and <tt>auto_start_video</tt>.
|
17
|
+
* Fixed the mobile urls generated in <tt>join_mobile</tt>.
|
18
|
+
* Updated ruby to 1.9.3-p484.
|
19
|
+
* New controller method <tt>bigbluebutton_create_options</tt>. Can return a hash of parameters that will override the parameters in the database when sending a create call. Can be used to force some options when creating a meeting without needing to save it to the database.
|
20
|
+
* Removed the routes to join external rooms. This feature was never really used, so was just consuming space and time. Removed the actions <tt>RoomsController#external</tt> and <tt>RoomsController#external_auth</tt>. The flag <tt>external</tt> in <tt>BigbluebuttonRoom</tt> is still there, since it is used to identify external meetings when fetching the meetings from a server.
|
21
|
+
* New logic to join meetings from mobile devices: now there's no specific page to join from a mobile. Once /join is called, if the user is in a mobile device (detected using the user's "user-agent") then a page will be rendered and the user will be automatically redirected to the conference using the mobile client. This page has also more information just in case the user is not properly redirected (if the mobile client is not installed, for example).
|
22
|
+
* Removed the login via QR Code.
|
23
|
+
|
1
24
|
== 1.3.0
|
2
25
|
|
3
|
-
|
26
|
+
To learn how to migrate to 1.3.0 see: https://github.com/mconf/bigbluebutton_rails/wiki/Migrate-to-1.3.0
|
4
27
|
|
28
|
+
* New dependency:
|
29
|
+
* whenever: To configure cron to trigger resque.
|
5
30
|
* Support for recordings. Details at https://github.com/mconf/bigbluebutton_rails/wiki/How-Recordings-Work. #459.
|
6
31
|
* Updated most of the dependencies to their latest version.
|
7
32
|
* Tested against Rails 3.2 (was Rails 3.0).
|
8
|
-
* New option
|
9
|
-
* New option
|
10
|
-
* Set the HTTP header
|
33
|
+
* New option <tt>:as</tt> in router helpers (more at https://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Routes)
|
34
|
+
* New option <tt>:only</tt> in router helpers (more at https://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Routes)
|
35
|
+
* Set the HTTP header <tt>x-forwarded-for</tt> with the IP of the client so servers can know who is creating/joining a meeting, for example.
|
11
36
|
* Removed assets (jquery, image) from the generator and from the gem.
|
12
|
-
* Removed the option to randomize meeting IDs, now they are fixed and generated as a globally unique meeting ID (
|
13
|
-
* Added logic to control who can create meetings (method called
|
37
|
+
* Removed the option to randomize meeting IDs, now they are fixed and generated as a globally unique meeting ID (<tt>"#{SecureRandom.uuid}-#{Time.now.to_i}"</tt>). #734, #735.
|
38
|
+
* Added logic to control who can create meetings (method called <tt>bigbluebutton_can_create?</tt>).
|
14
39
|
|
15
40
|
== 1.2.0
|
16
41
|
|
data/Gemfile
CHANGED
@@ -2,11 +2,15 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
+
gem "strong_parameters"
|
6
|
+
gem "resque"
|
7
|
+
gem "browser"
|
8
|
+
|
5
9
|
group :development do
|
6
|
-
gem "sqlite3-ruby"
|
7
10
|
gem "forgery"
|
8
11
|
gem "rdoc"
|
9
12
|
gem "rails_best_practices"
|
13
|
+
gem "spork-rails"
|
10
14
|
end
|
11
15
|
|
12
16
|
group :test do
|
@@ -22,18 +26,24 @@ group :test do
|
|
22
26
|
gem "rspec-rails"
|
23
27
|
gem "bbbot-ruby", :git => "git://github.com/mconf/bbbot-ruby.git"
|
24
28
|
|
25
|
-
|
26
|
-
gem "
|
29
|
+
# to use redis in-memory and clean it in-between tests, used for resque
|
30
|
+
gem "fakeredis", :require => "fakeredis/rspec"
|
31
|
+
|
32
|
+
gem "capybara", "~> 2.0.0"
|
33
|
+
gem "capybara-mechanize", "~> 1.0.0" # for remote requests
|
27
34
|
gem "capybara-webkit" # best option found for js
|
35
|
+
gem "launchy"
|
28
36
|
end
|
29
37
|
|
30
38
|
# Gems used by the test application
|
31
39
|
group :assets do
|
32
40
|
gem 'sass-rails', '~> 3.2.3'
|
33
41
|
gem 'coffee-rails', '~> 3.2.1'
|
42
|
+
gem 'therubyracer', '~> 0.12.0'
|
34
43
|
gem 'uglifier', '>= 1.0.3'
|
35
44
|
end
|
36
45
|
group :development do
|
46
|
+
gem 'mysql2'
|
37
47
|
gem "jquery-rails"
|
38
48
|
gem "whenever"
|
39
49
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/mconf/bbbot-ruby.git
|
3
|
-
revision:
|
3
|
+
revision: 506444359a5c2921718ccb13c7786ebe7e9109b2
|
4
4
|
specs:
|
5
5
|
bbbot-ruby (0.0.1)
|
6
6
|
|
7
7
|
PATH
|
8
8
|
remote: .
|
9
9
|
specs:
|
10
|
-
bigbluebutton_rails (1.
|
11
|
-
bigbluebutton-api-ruby (~> 1.
|
10
|
+
bigbluebutton_rails (1.4.0.beta1)
|
11
|
+
bigbluebutton-api-ruby (~> 1.3.0)
|
12
|
+
browser (~> 0.5.0)
|
12
13
|
rails (>= 3.0.0)
|
14
|
+
resque (~> 1.25.1)
|
15
|
+
strong_parameters (~> 0.2.0)
|
13
16
|
|
14
17
|
GEM
|
15
18
|
remote: http://rubygems.org/
|
@@ -44,8 +47,9 @@ GEM
|
|
44
47
|
addressable (2.3.2)
|
45
48
|
arel (3.0.2)
|
46
49
|
awesome_print (1.1.0)
|
47
|
-
bigbluebutton-api-ruby (1.
|
50
|
+
bigbluebutton-api-ruby (1.3.0)
|
48
51
|
xml-simple (>= 1.1.1)
|
52
|
+
browser (0.5.0)
|
49
53
|
builder (3.0.4)
|
50
54
|
capybara (2.0.3)
|
51
55
|
mime-types (>= 1.16)
|
@@ -54,14 +58,14 @@ GEM
|
|
54
58
|
rack-test (>= 0.5.4)
|
55
59
|
selenium-webdriver (~> 2.0)
|
56
60
|
xpath (~> 1.0.0)
|
57
|
-
capybara-mechanize (0.
|
61
|
+
capybara-mechanize (1.0.1)
|
58
62
|
capybara (~> 2.0, >= 2.0.1)
|
59
63
|
mechanize (~> 2.5)
|
60
64
|
capybara-webkit (0.14.2)
|
61
65
|
capybara (~> 2.0, >= 2.0.2)
|
62
66
|
json
|
63
|
-
childprocess (0.3.
|
64
|
-
ffi (~> 1.0, >= 1.0.
|
67
|
+
childprocess (0.3.9)
|
68
|
+
ffi (~> 1.0, >= 1.0.11)
|
65
69
|
chronic (0.9.0)
|
66
70
|
code_analyzer (0.3.0)
|
67
71
|
sexp_processor
|
@@ -73,35 +77,40 @@ GEM
|
|
73
77
|
execjs
|
74
78
|
coffee-script-source (1.4.0)
|
75
79
|
colored (1.2)
|
76
|
-
cucumber (1.2
|
80
|
+
cucumber (1.3.2)
|
77
81
|
builder (>= 2.1.2)
|
78
82
|
diff-lcs (>= 1.1.3)
|
79
|
-
gherkin (~> 2.
|
80
|
-
|
81
|
-
cucumber-rails (1.
|
83
|
+
gherkin (~> 2.12.0)
|
84
|
+
multi_json (~> 1.3)
|
85
|
+
cucumber-rails (1.4.0)
|
82
86
|
capybara (>= 1.1.2)
|
83
|
-
cucumber (>= 1.
|
87
|
+
cucumber (>= 1.2.0)
|
84
88
|
nokogiri (>= 1.5.0)
|
89
|
+
rails (>= 3.0.0)
|
85
90
|
database_cleaner (0.9.1)
|
86
91
|
diff-lcs (1.1.3)
|
87
|
-
domain_name (0.5.
|
88
|
-
unf (
|
92
|
+
domain_name (0.5.13)
|
93
|
+
unf (>= 0.0.5, < 1.0.0)
|
89
94
|
erubis (2.7.0)
|
90
95
|
execjs (1.4.0)
|
91
96
|
multi_json (~> 1.0)
|
92
97
|
factory_girl (4.1.0)
|
93
98
|
activesupport (>= 3.0.0)
|
99
|
+
fakeredis (0.4.2)
|
100
|
+
redis (~> 3.0.0)
|
94
101
|
ffi (1.1.5)
|
95
102
|
ffi (1.1.5-java)
|
96
103
|
forgery (0.5.0)
|
97
104
|
generator_spec (0.8.7)
|
98
105
|
activerecord (>= 3.0, < 4.0)
|
99
106
|
railties (>= 3.0, < 4.0)
|
100
|
-
gherkin (2.
|
101
|
-
|
102
|
-
gherkin (2.
|
103
|
-
|
107
|
+
gherkin (2.12.1)
|
108
|
+
multi_json (~> 1.3)
|
109
|
+
gherkin (2.12.1-java)
|
110
|
+
multi_json (~> 1.3)
|
104
111
|
hike (1.2.1)
|
112
|
+
http-cookie (1.0.2)
|
113
|
+
domain_name (~> 0.5)
|
105
114
|
i18n (0.6.1)
|
106
115
|
journey (1.0.4)
|
107
116
|
jquery-rails (2.1.4)
|
@@ -115,24 +124,28 @@ GEM
|
|
115
124
|
addressable (~> 2.3)
|
116
125
|
ffi (~> 1.1.1)
|
117
126
|
spoon (~> 0.0.1)
|
127
|
+
libv8 (3.16.14.3)
|
118
128
|
libwebsocket (0.1.5)
|
119
129
|
addressable
|
120
130
|
mail (2.4.4)
|
121
131
|
i18n (>= 0.4.0)
|
122
132
|
mime-types (~> 1.16)
|
123
133
|
treetop (~> 1.4.8)
|
124
|
-
mechanize (2.
|
134
|
+
mechanize (2.7.2)
|
125
135
|
domain_name (~> 0.5, >= 0.5.1)
|
136
|
+
http-cookie (~> 1.0.0)
|
126
137
|
mime-types (~> 1.17, >= 1.17.2)
|
127
138
|
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
128
139
|
net-http-persistent (~> 2.5, >= 2.5.2)
|
129
140
|
nokogiri (~> 1.4)
|
130
141
|
ntlm-http (~> 0.1, >= 0.1.1)
|
131
|
-
webrobots (
|
142
|
+
webrobots (>= 0.0.9, < 0.2)
|
132
143
|
mime-types (1.19)
|
144
|
+
mono_logger (1.1.0)
|
133
145
|
multi_json (1.3.7)
|
134
|
-
|
135
|
-
net-http-
|
146
|
+
mysql2 (0.3.13)
|
147
|
+
net-http-digest_auth (1.4)
|
148
|
+
net-http-persistent (2.9)
|
136
149
|
nokogiri (1.5.5)
|
137
150
|
nokogiri (1.5.5-java)
|
138
151
|
ntlm-http (0.1.1)
|
@@ -141,6 +154,8 @@ GEM
|
|
141
154
|
rack (1.4.1)
|
142
155
|
rack-cache (1.2)
|
143
156
|
rack (>= 0.4)
|
157
|
+
rack-protection (1.5.0)
|
158
|
+
rack
|
144
159
|
rack-ssl (1.3.2)
|
145
160
|
rack
|
146
161
|
rack-test (0.6.2)
|
@@ -171,44 +186,66 @@ GEM
|
|
171
186
|
rake (10.0.1)
|
172
187
|
rdoc (3.12)
|
173
188
|
json (~> 1.4)
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
189
|
+
redis (3.0.5)
|
190
|
+
redis-namespace (1.3.1)
|
191
|
+
redis (~> 3.0.0)
|
192
|
+
ref (1.0.5)
|
193
|
+
resque (1.25.1)
|
194
|
+
mono_logger (~> 1.0)
|
195
|
+
multi_json (~> 1.0)
|
196
|
+
redis-namespace (~> 1.2)
|
197
|
+
sinatra (>= 0.9.2)
|
198
|
+
vegas (~> 0.1.2)
|
199
|
+
rspec-core (2.14.4)
|
200
|
+
rspec-expectations (2.14.0)
|
201
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
202
|
+
rspec-mocks (2.14.2)
|
203
|
+
rspec-rails (2.14.0)
|
179
204
|
actionpack (>= 3.0)
|
180
205
|
activesupport (>= 3.0)
|
181
206
|
railties (>= 3.0)
|
182
|
-
rspec-core (~> 2.
|
183
|
-
rspec-expectations (~> 2.
|
184
|
-
rspec-mocks (~> 2.
|
207
|
+
rspec-core (~> 2.14.0)
|
208
|
+
rspec-expectations (~> 2.14.0)
|
209
|
+
rspec-mocks (~> 2.14.0)
|
185
210
|
rubyzip (0.9.9)
|
186
211
|
sass (3.2.5)
|
187
212
|
sass-rails (3.2.6)
|
188
213
|
railties (~> 3.2.0)
|
189
214
|
sass (>= 3.1.10)
|
190
215
|
tilt (~> 1.3)
|
191
|
-
selenium-webdriver (2.
|
216
|
+
selenium-webdriver (2.35.1)
|
192
217
|
childprocess (>= 0.2.5)
|
193
218
|
libwebsocket (~> 0.1.3)
|
194
219
|
multi_json (~> 1.0)
|
195
220
|
rubyzip
|
196
221
|
sexp_processor (4.1.2)
|
197
|
-
shoulda-matchers (
|
222
|
+
shoulda-matchers (2.2.0)
|
198
223
|
activesupport (>= 3.0.0)
|
199
224
|
simplecov (0.7.1)
|
200
225
|
multi_json (~> 1.0)
|
201
226
|
simplecov-html (~> 0.7.1)
|
202
227
|
simplecov-html (0.7.1)
|
228
|
+
sinatra (1.3.6)
|
229
|
+
rack (~> 1.4)
|
230
|
+
rack-protection (~> 1.3)
|
231
|
+
tilt (~> 1.3, >= 1.3.3)
|
203
232
|
spoon (0.0.1)
|
233
|
+
spork (1.0.0rc3)
|
234
|
+
spork-rails (3.2.1)
|
235
|
+
rails (>= 3.0.0, < 3.3.0)
|
236
|
+
spork (>= 1.0rc0)
|
204
237
|
sprockets (2.2.1)
|
205
238
|
hike (~> 1.2)
|
206
239
|
multi_json (~> 1.0)
|
207
240
|
rack (~> 1.0)
|
208
241
|
tilt (~> 1.1, != 1.3.0)
|
209
|
-
|
210
|
-
|
211
|
-
|
242
|
+
strong_parameters (0.2.1)
|
243
|
+
actionpack (~> 3.0)
|
244
|
+
activemodel (~> 3.0)
|
245
|
+
railties (~> 3.0)
|
246
|
+
therubyracer (0.12.0)
|
247
|
+
libv8 (~> 3.16.14.0)
|
248
|
+
ref
|
212
249
|
thor (0.16.0)
|
213
250
|
tilt (1.3.3)
|
214
251
|
treetop (1.4.14)
|
@@ -218,15 +255,17 @@ GEM
|
|
218
255
|
uglifier (1.3.0)
|
219
256
|
execjs (>= 0.3.0)
|
220
257
|
multi_json (~> 1.0, >= 1.0.2)
|
221
|
-
unf (0.
|
258
|
+
unf (0.1.2)
|
222
259
|
unf_ext
|
223
|
-
unf (0.
|
224
|
-
unf_ext (0.0.
|
225
|
-
|
260
|
+
unf (0.1.2-java)
|
261
|
+
unf_ext (0.0.6)
|
262
|
+
vegas (0.1.11)
|
263
|
+
rack (>= 1.0.0)
|
264
|
+
webrobots (0.1.1)
|
226
265
|
whenever (0.8.2)
|
227
266
|
activesupport (>= 2.3.4)
|
228
267
|
chronic (>= 0.6.3)
|
229
|
-
xml-simple (1.1.
|
268
|
+
xml-simple (1.1.3)
|
230
269
|
xpath (1.0.0)
|
231
270
|
nokogiri (~> 1.3)
|
232
271
|
|
@@ -237,22 +276,29 @@ PLATFORMS
|
|
237
276
|
DEPENDENCIES
|
238
277
|
bbbot-ruby!
|
239
278
|
bigbluebutton_rails!
|
240
|
-
|
279
|
+
browser
|
280
|
+
capybara (~> 2.0.0)
|
281
|
+
capybara-mechanize (~> 1.0.0)
|
241
282
|
capybara-webkit
|
242
283
|
coffee-rails (~> 3.2.1)
|
243
284
|
cucumber-rails
|
244
285
|
database_cleaner
|
245
286
|
factory_girl
|
287
|
+
fakeredis
|
246
288
|
forgery
|
247
289
|
generator_spec
|
248
290
|
jquery-rails
|
249
291
|
launchy
|
292
|
+
mysql2
|
250
293
|
rails_best_practices
|
251
294
|
rdoc
|
295
|
+
resque
|
252
296
|
rspec-rails
|
253
297
|
sass-rails (~> 3.2.3)
|
254
298
|
shoulda-matchers
|
255
299
|
simplecov (>= 0.4.0)
|
256
|
-
|
300
|
+
spork-rails
|
301
|
+
strong_parameters
|
302
|
+
therubyracer (~> 0.12.0)
|
257
303
|
uglifier (>= 1.0.3)
|
258
304
|
whenever
|
data/README.rdoc
CHANGED
@@ -1,46 +1,54 @@
|
|
1
1
|
= BigBlueButton on Rails
|
2
|
-
{<img src="https://secure.travis-ci.org/mconf/bigbluebutton_rails.png?branch=master" alt="Build Status" />}[https://travis-ci.org/mconf/bigbluebutton_rails]
|
3
2
|
|
4
3
|
{BigBlueButton}[http://bigbluebutton.org] integration for Ruby on Rails 3.
|
5
4
|
|
6
5
|
Features:
|
7
6
|
* Allows multiple servers and multiple conference rooms.
|
8
7
|
* Full API access using {bigbluebutton-api-ruby}[https://github.com/mconf/bigbluebutton-api-ruby].
|
9
|
-
* Easy way to join conferences: simply create a room and call the
|
10
|
-
* Easy integration with authentication and authorization mechanisms, such as Devise and CanCan.
|
8
|
+
* Easy way to join conferences: simply create a room and call the <tt>join</tt> action.
|
9
|
+
* Easy integration with authentication and authorization mechanisms, such as {Devise}[https://github.com/plataformatec/devise] and {CanCan}[https://github.com/ryanb/cancan].
|
11
10
|
* Support for recordings: meetings can be recorded, the list of recordings retrieved and recordings can be played.
|
12
11
|
* Possibility to create private rooms, that require a password to join.
|
13
12
|
* Deals with visitors (users that are not logged), allowing (or forbidding) them to join rooms.
|
14
|
-
*
|
15
|
-
* Server activity monitor.
|
16
|
-
*
|
13
|
+
* Uses static meeting IDs generated as a globally unique identifier (e.g. "36mskja87-029i-lsk9-b96e-98278407e145-1365703324").
|
14
|
+
* Server activity monitor that shows what's happening in the server.
|
15
|
+
* Stores a registry of meetings that happened and associates them with the recording that was generated for it (if any).
|
16
|
+
* Allows rooms to be configured dynamically using the <tt>{config.xml}[https://code.google.com/p/bigbluebutton/wiki/ClientConfiguration]</tt> feature.
|
17
17
|
|
18
18
|
Possible future features:
|
19
19
|
* Limit the number of users per room and rooms per server.
|
20
|
-
* Server administration (
|
20
|
+
* Server administration (use bbb-conf, etc.).
|
21
21
|
* Pre-upload of slides.
|
22
|
+
* See {TODO.rdoc}[https://github.com/mconf/bigbluebutton_rails/blob/master/TODO.rdoc].
|
22
23
|
|
23
24
|
== Supported versions
|
24
25
|
|
25
26
|
=== BigBlueButton
|
26
27
|
|
27
|
-
The current version of this gem supports
|
28
|
+
The current version of this gem supports <tt>all</tt> the following versions of BigBlueButton:
|
28
29
|
|
29
|
-
* 0.
|
30
|
+
* 0.81: Altough not all features are supported yet. (See {TODO.rdoc}[https://github.com/mconf/bigbluebutton_rails/blob/master/TODO.rdoc].)
|
31
|
+
* 0.8: Altough not all features are supported yet, such as pre-upload of slides. (See {TODO.rdoc}[https://github.com/mconf/bigbluebutton_rails/blob/master/TODO.rdoc].)
|
30
32
|
* 0.7: Including 0.7, 0.71 and 0.71a.
|
31
33
|
|
32
34
|
=== Ruby
|
33
35
|
|
34
36
|
Tested in rubies:
|
35
37
|
|
36
|
-
* ruby-1.9.
|
37
|
-
* ruby-1.9.
|
38
|
+
* ruby-1.9.3 (p484) *recommended*
|
39
|
+
* ruby-1.9.2 (p290)
|
40
|
+
|
41
|
+
Use these versions to be sure it will work. Other patches of 1.9.2 and 1.9.3 should work as well.
|
38
42
|
|
39
43
|
=== Rails
|
40
44
|
|
41
|
-
To be used with
|
45
|
+
To be used with <b>Rails 3</b> only (should work on 3.0, 3.1 and 3.2).
|
42
46
|
Tested mainly with Rails 3.2.
|
43
47
|
|
48
|
+
=== Database
|
49
|
+
|
50
|
+
We recommend the use of MySQL in your application, since this gem is developed and tested using it.
|
51
|
+
|
44
52
|
== Installation
|
45
53
|
|
46
54
|
You can install the latest version of BigbluebuttonRails using RubyGems:
|
@@ -67,6 +75,29 @@ You can easily generate the views and the css file in your application to later
|
|
67
75
|
|
68
76
|
To now more about the generators see {How to: Generators}[https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Generators]
|
69
77
|
|
78
|
+
==== Dependencies
|
79
|
+
|
80
|
+
Notice: Since version 1.4.0, new dependencies were added to applications that use this gem.
|
81
|
+
|
82
|
+
Include the following gems in your Gemfile:
|
83
|
+
|
84
|
+
gem 'whenever'
|
85
|
+
gem 'strong_parameters'
|
86
|
+
gem 'resque'
|
87
|
+
|
88
|
+
{whenever}[https://github.com/javan/whenever] is used to schedule cron jobs from the application. Cron jobs are used in BigbluebuttonRails
|
89
|
+
to update the list of recordings periodically.
|
90
|
+
|
91
|
+
{strong_parameters}[https://github.com/rails/strong_parameters] is used to validate which parameters can be updated in a model. With
|
92
|
+
it you can, for example, allow admins to update anything on a web conference rooms while normal users can only update the rooms name.
|
93
|
+
This gem is used by default in Rails 4.
|
94
|
+
|
95
|
+
{resque}[https://github.com/defunkt/resque] is used to schedule workers that will control the list of meetings. A meeting is a model that is
|
96
|
+
created whenever a meeting is held in a room. We need workers to run these tasks in background and check when meetings start and stop.
|
97
|
+
|
98
|
+
Read more about some of these dependencies below.
|
99
|
+
|
100
|
+
|
70
101
|
=== Routes
|
71
102
|
|
72
103
|
The routes to BigbluebuttonRails can be generated with the helper <tt>bigbluebutton_routes</tt>. See the example below:
|
@@ -108,7 +139,7 @@ For more information see:
|
|
108
139
|
|
109
140
|
* {How to: Routes}[https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Routes]
|
110
141
|
|
111
|
-
=== Basic
|
142
|
+
=== Basic configuration
|
112
143
|
|
113
144
|
There are some basic assumptions made by BigbluebuttonRails:
|
114
145
|
|
@@ -170,6 +201,24 @@ For more information see:
|
|
170
201
|
|
171
202
|
* {How recordings work}[https://github.com/mconf/bigbluebutton_rails/wiki/How-Recordings-Work]
|
172
203
|
|
204
|
+
|
205
|
+
=== Updating the list of meetings
|
206
|
+
|
207
|
+
Meetings (<tt>BigbluebuttonMeeting</tt> models) in BigbluebuttonRails are instances of meetings that were held in web conference rooms. A meeting is created whenever
|
208
|
+
the application detects that a user joined a room and that he's the first user. Meetings are never removed, they are kept as a registry of
|
209
|
+
what happened in the web conference servers connected to BigbluebuttonRails.
|
210
|
+
|
211
|
+
The creating of these objects is done in background using a gem called {resque}[https://github.com/defunkt/resque]. Whenever a user
|
212
|
+
clicks in the button to join a meeting, a resque worker is scheduled. This worker will wait for a while until the meeting is created and
|
213
|
+
running in the web conference server, and will then create the correponding <tt>BigbluebuttonMeeting</tt> object.
|
214
|
+
|
215
|
+
To keep track of meetings, you have to run the resque workers (this is needed both in development and in production):
|
216
|
+
|
217
|
+
rake resque:work QUEUE='bigbluebutton_rails'
|
218
|
+
|
219
|
+
The list of meetings is also periodically synchronized using cron tasks, as is done for the list of recordings (see the section above).
|
220
|
+
|
221
|
+
|
173
222
|
=== Example application
|
174
223
|
|
175
224
|
If you need more help to set up the gem or just want to see an example of it working,
|
@@ -186,16 +235,18 @@ check out the test application at <tt>spec/rails_app/</tt>!
|
|
186
235
|
Fork this repository, clone your fork and start by installing the dependencies:
|
187
236
|
|
188
237
|
bundle install
|
189
|
-
|
238
|
+
|
190
239
|
Note: if you're getting an error installing <tt>capybara-webkit</tt>, most likely you need to install QT, see: https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit
|
191
240
|
|
241
|
+
First copy <tt>spec/rails_app/config/database.yml.example</tt> to <tt>spec/rails_app/config/database.yml</tt>. It uses MySQL since this is the database recommended for the applications that use this gem. You have to set the appropriate password for your MySQL user.
|
242
|
+
|
192
243
|
Save <tt>spec/rails_app/features/config.yml.example</tt> as <tt>spec/rails_app/features/config.yml</tt> and edit it to set values for an existent BigBlueButton server. You will need it to run the integration tests. For more information see the page {Testing}[https://github.com/mconf/bigbluebutton_rails/wiki/Testing] in our wiki.
|
193
244
|
|
194
245
|
Prepare the <tt>rails_app</tt> used for tests:
|
195
246
|
|
196
247
|
rake rails_app:install
|
197
248
|
rake rails_app:db SERVER=my-server # select a server you defined in 'config.yml'
|
198
|
-
rake rails_app:populate # to create fake data
|
249
|
+
rake rails_app:populate # to create fake data, optional
|
199
250
|
|
200
251
|
Run the tests:
|
201
252
|
|
@@ -206,6 +257,10 @@ Or simply:
|
|
206
257
|
|
207
258
|
rake SERVER=my-server
|
208
259
|
|
260
|
+
If you're adding migrations to the gem, test them with:
|
261
|
+
|
262
|
+
rake spec:migrations
|
263
|
+
|
209
264
|
Note: If you don't set the SERVER variable, the first server in <tt>config.yml</tt> will be used.
|
210
265
|
|
211
266
|
You can also start the test application and navigate to <tt>localhost:3000</tt> to check it:
|
@@ -213,12 +268,26 @@ You can also start the test application and navigate to <tt>localhost:3000</tt>
|
|
213
268
|
cd spec/rails_app/
|
214
269
|
rails server
|
215
270
|
|
271
|
+
If you need to keep track of meetings, run the resque workers with:
|
272
|
+
|
273
|
+
rake resque:work QUEUE='bigbluebutton_rails'
|
274
|
+
|
216
275
|
Develop. :)
|
217
276
|
|
218
277
|
If you want your code to be integrated in this repository, please fork it, create a branch with your modifications and submit a pull request.
|
219
278
|
|
220
279
|
* See more about testing {in our wiki page}[https://github.com/mconf/bigbluebutton_rails/wiki/Testing].
|
221
280
|
|
281
|
+
=== Spork
|
282
|
+
|
283
|
+
{Spork}[https://github.com/sporkrb/spork-rails] allows you to run tests faster. Run this in a terminal to start spork:
|
284
|
+
|
285
|
+
bundle exec spork
|
286
|
+
|
287
|
+
Then run the tests with:
|
288
|
+
|
289
|
+
bundle exec rspec -X spec/
|
290
|
+
|
222
291
|
=== Test Coverage
|
223
292
|
|
224
293
|
Coverage is analyzed by default when you run:
|