bigbluebutton_rails 1.4.0 → 2.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 +7 -0
- data/.ruby-version +1 -1
- data/.travis.yml +10 -1
- data/CHANGELOG.md +259 -0
- data/Gemfile +14 -19
- data/Gemfile.lock +194 -188
- data/README.md +416 -0
- data/Rakefile +12 -12
- data/TODO.md +13 -0
- data/app/controllers/bigbluebutton/playback_types_controller.rb +44 -0
- data/app/controllers/bigbluebutton/recordings_controller.rb +17 -10
- data/app/controllers/bigbluebutton/rooms_controller.rb +65 -36
- data/app/controllers/bigbluebutton/servers_controller.rb +12 -8
- data/app/models/bigbluebutton_metadata.rb +1 -1
- data/app/models/bigbluebutton_playback_format.rb +22 -1
- data/app/models/bigbluebutton_playback_type.rb +29 -0
- data/app/models/bigbluebutton_recording.rb +38 -19
- data/app/models/bigbluebutton_room.rb +150 -73
- data/app/models/bigbluebutton_room_options.rb +10 -7
- data/app/models/bigbluebutton_server.rb +69 -13
- data/app/models/bigbluebutton_server_config.rb +49 -0
- data/app/views/bigbluebutton/recordings/_form.html.erb +4 -0
- data/app/views/bigbluebutton/recordings/_recordings.html.erb +10 -3
- data/app/views/bigbluebutton/rooms/_form.html.erb +18 -6
- data/app/views/bigbluebutton/rooms/_rooms.html.erb +6 -3
- data/app/views/bigbluebutton/rooms/invite.html.erb +5 -5
- data/app/views/bigbluebutton/rooms/show.html.erb +18 -6
- data/app/views/bigbluebutton/servers/_form.html.erb +1 -1
- data/app/views/bigbluebutton/servers/show.html.erb +5 -0
- data/app/workers/bigbluebutton_finish_meetings.rb +11 -0
- data/app/workers/bigbluebutton_update_recordings.rb +11 -0
- data/app/workers/bigbluebutton_update_server_configs.rb +18 -0
- data/bigbluebutton_rails.gemspec +8 -7
- data/config/locales/en.yml +52 -7
- data/config/locales/pt-br.yml +162 -0
- data/config/resque/resque.rake +27 -0
- data/config/resque/workers_schedule.yml +17 -0
- data/lib/bigbluebutton_rails.rb +30 -2
- data/lib/bigbluebutton_rails/background_tasks.rb +31 -0
- data/lib/bigbluebutton_rails/controller_methods.rb +12 -8
- data/lib/bigbluebutton_rails/dial_number.rb +48 -0
- data/lib/bigbluebutton_rails/rails/routes.rb +9 -2
- data/lib/bigbluebutton_rails/utils.rb +9 -2
- data/lib/bigbluebutton_rails/version.rb +1 -1
- data/lib/generators/bigbluebutton_rails/install_generator.rb +0 -8
- data/lib/generators/bigbluebutton_rails/templates/migration.rb +28 -6
- data/lib/generators/bigbluebutton_rails/templates/migration_2_0_0.rb +56 -0
- data/lib/tasks/bigbluebutton_rails/meetings.rake +1 -13
- data/lib/tasks/bigbluebutton_rails/recordings.rake +1 -12
- data/lib/tasks/bigbluebutton_rails/server_configs.rake +10 -0
- data/spec/bigbluebutton_rails_spec.rb +0 -13
- data/spec/controllers/bigbluebutton/playback_types_controller_spec.rb +76 -0
- data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +109 -37
- data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +1 -0
- data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +27 -3
- data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +338 -77
- data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +8 -0
- data/spec/controllers/bigbluebutton/servers_controller_spec.rb +182 -47
- data/spec/factories/bigbluebutton_meeting.rb +2 -2
- data/spec/factories/bigbluebutton_playback_format.rb +2 -2
- data/spec/factories/bigbluebutton_playback_type.rb +7 -0
- data/spec/factories/bigbluebutton_recording.rb +8 -0
- data/spec/factories/bigbluebutton_room.rb +10 -3
- data/spec/factories/bigbluebutton_server.rb +6 -1
- data/spec/factories/bigbluebutton_server_config.rb +6 -0
- data/spec/generators/install_generator_spec.rb +0 -16
- data/spec/lib/bigbluebutton_rails/background_tasks_spec.rb +61 -0
- data/spec/lib/bigbluebutton_rails/dial_number_spec.rb +78 -0
- data/spec/lib/bigbluebutton_rails/utils_spec.rb +56 -0
- data/spec/lib/tasks/meetings_rake_spec.rb +14 -1
- data/spec/lib/tasks/recordings_rake_spec.rb +14 -1
- data/spec/models/bigbluebutton_meeting_db_spec.rb +3 -3
- data/spec/models/bigbluebutton_meeting_spec.rb +4 -4
- data/spec/models/bigbluebutton_playback_format_db_spec.rb +0 -1
- data/spec/models/bigbluebutton_playback_format_spec.rb +75 -4
- data/spec/models/bigbluebutton_playback_type_db_spec.rb +14 -0
- data/spec/models/bigbluebutton_playback_type_spec.rb +76 -0
- data/spec/models/bigbluebutton_recording_db_spec.rb +3 -1
- data/spec/models/bigbluebutton_recording_spec.rb +234 -58
- data/spec/models/bigbluebutton_room_db_spec.rb +8 -6
- data/spec/models/bigbluebutton_room_options_db_spec.rb +1 -0
- data/spec/models/bigbluebutton_room_options_spec.rb +137 -38
- data/spec/models/bigbluebutton_room_spec.rb +540 -153
- data/spec/models/bigbluebutton_server_config_spec.rb +115 -0
- data/spec/models/bigbluebutton_server_spec.rb +180 -23
- data/spec/rails_app/app/controllers/my_playback_types_controller.rb +7 -0
- data/spec/rails_app/app/views/frontpage/show.html.erb +1 -0
- data/spec/rails_app/app/views/my_playback_types/index.html.erb +33 -0
- data/spec/rails_app/config/application.rb +0 -3
- data/spec/rails_app/config/database.yml.travis +10 -0
- data/spec/rails_app/config/environments/development.rb +1 -6
- data/spec/rails_app/config/environments/production.rb +2 -0
- data/spec/rails_app/config/environments/test.rb +2 -0
- data/spec/rails_app/config/routes.rb +5 -2
- data/spec/rails_app/db/seeds.rb +1 -1
- data/spec/rails_app/features/config.yml.example +3 -4
- data/spec/rails_app/features/join_rooms.feature +14 -14
- data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +2 -2
- data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +4 -4
- data/spec/rails_app/features/step_definitions/destroy_rooms_steps.rb +2 -2
- data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +10 -10
- data/spec/rails_app/features/step_definitions/web_steps.rb +2 -2
- data/spec/rails_app/features/support/configurations.rb +1 -1
- data/spec/rails_app/features/support/templates.rb +12 -12
- data/spec/rails_app/lib/tasks/db/populate.rake +19 -6
- data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +1 -1
- data/spec/routing/bigbluebutton/recordings_only_routing_spec.rb +2 -2
- data/spec/routing/bigbluebutton/recordings_routing_spec.rb +2 -2
- data/spec/routing/bigbluebutton/rooms_only_routing_spec.rb +1 -1
- data/spec/routing/bigbluebutton/rooms_routing_spec.rb +15 -1
- data/spec/routing/bigbluebutton/servers_only_routing_spec.rb +1 -1
- data/spec/routing/bigbluebutton/servers_routing_spec.rb +1 -1
- data/spec/spec_helper.rb +23 -31
- data/spec/support/matchers/delegate_matcher.rb +8 -1
- data/spec/support/matchers/shoulda/respond_with_json_matcher.rb +2 -2
- data/spec/support/mocked_server.rb +2 -0
- data/spec/support/shared_contexts/rake.rb +23 -0
- data/spec/workers/bigbluebutton_finish_meetings_spec.rb +14 -0
- data/spec/workers/bigbluebutton_update_recordings_spec.rb +14 -0
- data/spec/workers/bigbluebutton_update_server_configs_spec.rb +47 -0
- metadata +70 -59
- data/CHANGELOG.rdoc +0 -111
- data/README.rdoc +0 -319
- data/TODO.rdoc +0 -16
- data/config/schedule.rb +0 -7
data/README.md
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
# BigBlueButton on Rails [<img src="http://travis-ci.org/mconf/bigbluebutton_rails.png"/>](http://travis-ci.org/mconf/bigbluebutton_rails)
|
|
2
|
+
|
|
3
|
+
[BigBlueButton](http://bigbluebutton.org) integration for Ruby on Rails 4.
|
|
4
|
+
|
|
5
|
+
Features:
|
|
6
|
+
|
|
7
|
+
* Allows multiple servers and multiple conference rooms.
|
|
8
|
+
* Full API access using
|
|
9
|
+
[bigbluebutton-api-ruby](https://github.com/mconf/bigbluebutton-api-ruby).
|
|
10
|
+
* Easy way to join conferences: simply create a room and call the `join`
|
|
11
|
+
action.
|
|
12
|
+
* Easy integration with authentication and authorization mechanisms, such as
|
|
13
|
+
[Devise](https://github.com/plataformatec/devise) and
|
|
14
|
+
[CanCan](https://github.com/ryanb/cancan).
|
|
15
|
+
* Support for recordings: meetings can be recorded, the list of recordings
|
|
16
|
+
retrieved and recordings can be played.
|
|
17
|
+
* Possibility to create private rooms, that require a password to join.
|
|
18
|
+
* Deals with visitors (users that are not logged), allowing (or forbidding)
|
|
19
|
+
them to join rooms.
|
|
20
|
+
* Uses static meeting IDs generated as a globally unique identifier (e.g.
|
|
21
|
+
`36mskja87-029i-lsk9-b96e-98278407e145-1365703324`).
|
|
22
|
+
* Stores a registry of meetings that happened and associates them with the
|
|
23
|
+
recording that was generated for it (if any).
|
|
24
|
+
* Allows rooms to be configured dynamically using the
|
|
25
|
+
`{config.xml}[https://code.google.com/p/bigbluebutton/wiki/ClientConfigura
|
|
26
|
+
tion]` feature.
|
|
27
|
+
* Automatic detection of the user-agent to automatically trigger the [mobile
|
|
28
|
+
client](https://github.com/bigbluebutton/bbb-air-client) when joining a
|
|
29
|
+
conference from a mobile device.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Possible future features:
|
|
33
|
+
|
|
34
|
+
* Limit the number of users per room and rooms per server.
|
|
35
|
+
* Server administration (use `bbb-conf`, etc).
|
|
36
|
+
* Pre-upload of slides.
|
|
37
|
+
* See
|
|
38
|
+
[TODO.md](https://github.com/mconf/bigbluebutton_rails/blob/master/TODO.md).
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## Supported versions
|
|
42
|
+
|
|
43
|
+
This gem is mainly used with [Mconf-Web](https://github.com/mconf/mconf-web).
|
|
44
|
+
You can always use it as a reference for verions of dependencies and examples of how to use the gem.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### BigBlueButton
|
|
48
|
+
|
|
49
|
+
The current version of this gem supports `all` the following versions of
|
|
50
|
+
BigBlueButton:
|
|
51
|
+
|
|
52
|
+
* 1.0
|
|
53
|
+
* 0.9
|
|
54
|
+
* 0.81
|
|
55
|
+
* 0.8
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Ruby
|
|
59
|
+
|
|
60
|
+
Tested in rubies:
|
|
61
|
+
|
|
62
|
+
Requires ruby >= 1.9.3.
|
|
63
|
+
|
|
64
|
+
* ruby-2.2 **recommended**
|
|
65
|
+
* ruby-2.1
|
|
66
|
+
* ruby-1.9.3 (last tested with p484)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Use these versions to be sure it will work. Other patches of these versions
|
|
70
|
+
should work as well.
|
|
71
|
+
|
|
72
|
+
### Rails
|
|
73
|
+
|
|
74
|
+
To be used with **Rails 4** only. Currently tested with Rails 4.1.
|
|
75
|
+
|
|
76
|
+
Version 1.4.0 was the last one to support Rails 3.2. To use it, use the tag
|
|
77
|
+
[`v1.4.0`](https://github.com/mconf/bigbluebutton_rails/tree/v1.4.0).
|
|
78
|
+
|
|
79
|
+
### Database
|
|
80
|
+
|
|
81
|
+
We recommend the use of MySQL in your application, since this gem is developed
|
|
82
|
+
and tested using it.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Upgrade
|
|
86
|
+
|
|
87
|
+
When updating the gem to a newer version, there are usually extra steps you'll have to take in order to have the database migrated, the dependencies updated, and others. These steps are described in [our wiki](https://github.com/mconf/bigbluebutton_rails/wiki). See:
|
|
88
|
+
|
|
89
|
+
* [Migrate to 1.4.0](https://github.com/mconf/bigbluebutton_rails/wiki/Migrate-to-1.4.0)
|
|
90
|
+
* [Migrate to 1.3.0](https://github.com/mconf/bigbluebutton_rails/wiki/Migrate-to-1.3.0)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Installation
|
|
94
|
+
|
|
95
|
+
You can install the latest version of BigbluebuttonRails using RubyGems:
|
|
96
|
+
|
|
97
|
+
gem install bigbluebutton_rails
|
|
98
|
+
|
|
99
|
+
Or simply add the following line in your Gemfile:
|
|
100
|
+
|
|
101
|
+
gem "bigbluebutton_rails"
|
|
102
|
+
|
|
103
|
+
After installing, you need to run the generator:
|
|
104
|
+
|
|
105
|
+
rails generate bigbluebutton_rails:install
|
|
106
|
+
|
|
107
|
+
This generator will create the files needed to setup the gem in your
|
|
108
|
+
application. You should take some time to open all the files generated and
|
|
109
|
+
analyze them.
|
|
110
|
+
|
|
111
|
+
By default the gem will use the views it provides, **but it is strongly
|
|
112
|
+
recommended that you adapt them for your needs!** The views provided are just
|
|
113
|
+
an example of how they can be implemented in your application and they depend
|
|
114
|
+
on jQuery (use the gem `jquery-rails`) and on a css file provided by this gem.
|
|
115
|
+
You can easily generate the views and the css file in your application to
|
|
116
|
+
later customize them with:
|
|
117
|
+
|
|
118
|
+
rails generate bigbluebutton_rails:views
|
|
119
|
+
|
|
120
|
+
To now more about the generators see [How to:
|
|
121
|
+
Generators](https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Generators)
|
|
122
|
+
|
|
123
|
+
#### Dependencies
|
|
124
|
+
|
|
125
|
+
Since version 1.4.0, this gem depends on
|
|
126
|
+
[Resque](https://github.com/defunkt/resque), and since 2.0.0 it also uses
|
|
127
|
+
[Resque-scheduler](https://github.com/resque/resque-scheduler).
|
|
128
|
+
|
|
129
|
+
These gems are used to run background jobs. The ones we have right now are:
|
|
130
|
+
update the list of recordings, check for meetings that started or ended to
|
|
131
|
+
update the database.
|
|
132
|
+
|
|
133
|
+
The gem already requires all dependencies, so you don't have to include them
|
|
134
|
+
in your Gemfile. But you need to configure your application to use Resque and
|
|
135
|
+
Resque-scheduler.
|
|
136
|
+
|
|
137
|
+
To do so, copy the following files to your application:
|
|
138
|
+
|
|
139
|
+
* `config/resque/resque.rake` to your application's `lib/tasks/`;
|
|
140
|
+
* `config/resque/workers_schedule.yml` to your application's `config/`.
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
The first is a rake task to trigger Resque and Resque-scheduler. The second is
|
|
144
|
+
the scheduling of tasks used by Resque-scheduler. If you already use these
|
|
145
|
+
gems in your application, you probably already have these files. So you can
|
|
146
|
+
just merge them together.
|
|
147
|
+
|
|
148
|
+
To run Resque and Resque-scheduler you will need to run the take tasks:
|
|
149
|
+
|
|
150
|
+
QUEUE="bigbluebutton_rails" rake resque:work
|
|
151
|
+
rake resque:scheduler
|
|
152
|
+
|
|
153
|
+
These gems use [redis](http://redis.io/) to store their data, so you will need
|
|
154
|
+
it in your server. If you're on Ubuntu, you can install it with:
|
|
155
|
+
|
|
156
|
+
apt-get install redis-server
|
|
157
|
+
|
|
158
|
+
Please refer to the documentation of
|
|
159
|
+
[Resque](https://github.com/defunkt/resque) and
|
|
160
|
+
[Resque-scheduler](https://github.com/resque/resque-scheduler) to learn more
|
|
161
|
+
about them and how to use them in development or production.
|
|
162
|
+
|
|
163
|
+
### Routes
|
|
164
|
+
|
|
165
|
+
The routes to BigbluebuttonRails can be generated with the helper
|
|
166
|
+
`bigbluebutton_routes`. See the example below:
|
|
167
|
+
|
|
168
|
+
bigbluebutton_routes :default
|
|
169
|
+
|
|
170
|
+
It will generate the default routes. You need to call it at least once and the
|
|
171
|
+
routes will be scoped with 'bigbluebutton'. They will look like:
|
|
172
|
+
|
|
173
|
+
/bigbluebutton/servers
|
|
174
|
+
/bigbluebutton/servers/my-server/new
|
|
175
|
+
/bigbluebutton/servers/my-server/rooms
|
|
176
|
+
/bigbluebutton/rooms
|
|
177
|
+
/bigbluebutton/rooms/my-room/join
|
|
178
|
+
|
|
179
|
+
You can also make the routes use custom controllers:
|
|
180
|
+
|
|
181
|
+
bigbluebutton_routes :default, :controllers => {
|
|
182
|
+
:servers => 'custom_servers',
|
|
183
|
+
:rooms => 'custom_rooms',
|
|
184
|
+
:recordings => 'custom_recordings'
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
To generate routes for a single controller:
|
|
188
|
+
|
|
189
|
+
bigbluebutton_routes :default, :only => 'servers'
|
|
190
|
+
|
|
191
|
+
You may also want shorter routes to access conference rooms. For that, use the
|
|
192
|
+
option `room_matchers`:
|
|
193
|
+
|
|
194
|
+
resources :users do
|
|
195
|
+
bigbluebutton_routes :room_matchers
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
It creates routes to the actions used to access a conference room, so you can
|
|
199
|
+
allow access to webconference rooms using URLs such as:
|
|
200
|
+
|
|
201
|
+
http://myserver.com/my-community/room-name/join
|
|
202
|
+
http://myserver.com/user-name/room-name/join
|
|
203
|
+
|
|
204
|
+
For more information see:
|
|
205
|
+
|
|
206
|
+
* [How to: Routes](https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Routes)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
### Basic configuration
|
|
210
|
+
|
|
211
|
+
There are some basic assumptions made by BigbluebuttonRails:
|
|
212
|
+
|
|
213
|
+
* You have a method called `current_user` that returns the current user;
|
|
214
|
+
* The `current_user` has an attribute or method called "name" that returns
|
|
215
|
+
his/her fullname and an attribute or method "id" that returns the ID.
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
If you don't, you can change this behaviour easily, keep reading.
|
|
219
|
+
|
|
220
|
+
BigbluebuttonRails uses the methods `bigbluebutton_user` and
|
|
221
|
+
`bigbluebutton_role(room)` to get the current user and to get the permission
|
|
222
|
+
that the current user has in the `room`, respectively. These methods are
|
|
223
|
+
defined in
|
|
224
|
+
`{lib/bigbluebutton_rails/controller_methods.rb}[https://github.com/mconf/bigb
|
|
225
|
+
luebutton_rails/blob/master/lib/bigbluebutton_rails/controller_methods.rb]`
|
|
226
|
+
and you can reimplement them in your application controller to change their
|
|
227
|
+
behaviour as shown below.
|
|
228
|
+
|
|
229
|
+
class ApplicationController < ActionController::Base
|
|
230
|
+
|
|
231
|
+
# overriding bigbluebutton_rails function
|
|
232
|
+
def bigbluebutton_user
|
|
233
|
+
current_user && current_user.is_a?(User) ? current_user : nil
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def bigbluebutton_role(room)
|
|
237
|
+
...
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
### Updating the recordings
|
|
243
|
+
|
|
244
|
+
Since this task can consume quite some time if your server has a lot of
|
|
245
|
+
recordings, it is recommended to run it periodically in the background. It is
|
|
246
|
+
already done by the application if you are running Resque and Resque-scheduler
|
|
247
|
+
properly. But this gem also provides a rake task to fetch the recordings from
|
|
248
|
+
the web conference servers and update the application database.
|
|
249
|
+
|
|
250
|
+
The command below will fetch recordings for **all servers** and update the
|
|
251
|
+
database with all recordings found:
|
|
252
|
+
|
|
253
|
+
rake bigbluebutton_rails:recordings:update
|
|
254
|
+
|
|
255
|
+
* [How recordings work](https://github.com/mconf/bigbluebutton_rails/wiki/How-Recordings-Work)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
### Updating the list of meetings
|
|
259
|
+
|
|
260
|
+
Meetings (`BigbluebuttonMeeting` models) in BigbluebuttonRails are instances
|
|
261
|
+
of meetings that were held in web conference rooms. A meeting is created
|
|
262
|
+
whenever the application detects that a user joined a room and that he's the
|
|
263
|
+
first user. Meetings are never removed, they are kept as a registry of what
|
|
264
|
+
happened in the web conference servers connected to BigbluebuttonRails.
|
|
265
|
+
|
|
266
|
+
The creating of these objects is done in background using a gem called
|
|
267
|
+
[resque](https://github.com/defunkt/resque). Whenever a user clicks in the
|
|
268
|
+
button to join a meeting, a resque worker is scheduled. This worker will wait
|
|
269
|
+
for a while until the meeting is created and running in the web conference
|
|
270
|
+
server, and will then create the corresponding `BigbluebuttonMeeting` object.
|
|
271
|
+
|
|
272
|
+
To keep track of meetings, you have to run the resque workers (this is needed
|
|
273
|
+
both in development and in production):
|
|
274
|
+
|
|
275
|
+
rake resque:work QUEUE='bigbluebutton_rails'
|
|
276
|
+
|
|
277
|
+
The list of meetings is also periodically synchronized using Resque-scheduler
|
|
278
|
+
(see the sections above).
|
|
279
|
+
|
|
280
|
+
### Associating rooms and servers
|
|
281
|
+
|
|
282
|
+
Rooms must be associated with a server to function. When a meeting is created,
|
|
283
|
+
it is created in the server that's associated with the room. The association
|
|
284
|
+
is done using the `server_id` attribute in `BigbluebuttonRoom`. So
|
|
285
|
+
applications that use this gem can manage all the associations by simply
|
|
286
|
+
setting this attribute.
|
|
287
|
+
|
|
288
|
+
By default, this gem automatically selects a server **if one is needed and the
|
|
289
|
+
room has no server yet**. If a room already has a server, the gem will never
|
|
290
|
+
change it.
|
|
291
|
+
|
|
292
|
+
To change this behavior, applications can override the method
|
|
293
|
+
`{BigbluebuttonRoom#select_server}[https://github.com/mconf/bigbluebutton_rail
|
|
294
|
+
s/blob/5decf3fa7767002303cf8bda524dcbeca0a9146c/app/models/bigbluebutton_room.
|
|
295
|
+
rb#L413]`. This method is called by all methods that trigger API calls,
|
|
296
|
+
methods that need a server to work properly. It receives a parameter that
|
|
297
|
+
indicates which API call will be sent to the server.
|
|
298
|
+
|
|
299
|
+
If the method returns a server, the server will be associated with the room.
|
|
300
|
+
If the method returns `nil`, the room will maintain the server it had
|
|
301
|
+
previously (if any).
|
|
302
|
+
|
|
303
|
+
One common use would be to override this method to always select a new server
|
|
304
|
+
when a meeting is created (when the argument received is `:create`). This
|
|
305
|
+
would allow the implementation of a simple load balancing mechanism.
|
|
306
|
+
|
|
307
|
+
### Example application
|
|
308
|
+
|
|
309
|
+
If you need more help to set up the gem or just want to see an example of it
|
|
310
|
+
working, check out the test application at `spec/rails_app/`!
|
|
311
|
+
|
|
312
|
+
#### See also
|
|
313
|
+
|
|
314
|
+
* [How to: Integrate with Devise](https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Integrate-with-Devise)
|
|
315
|
+
* [How to: Integrate with CanCan](https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Integrate-with-CanCan)
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
## Contributing/Development
|
|
319
|
+
|
|
320
|
+
Fork this repository, clone your fork and start by installing the
|
|
321
|
+
dependencies:
|
|
322
|
+
|
|
323
|
+
bundle install
|
|
324
|
+
|
|
325
|
+
Note: if you're getting an error installing `capybara-webkit`, most likely you
|
|
326
|
+
need to install QT, see:
|
|
327
|
+
https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling
|
|
328
|
+
-capybara-webkit
|
|
329
|
+
|
|
330
|
+
First copy `spec/rails_app/config/database.yml.example` to
|
|
331
|
+
`spec/rails_app/config/database.yml`. It uses MySQL since this is the database
|
|
332
|
+
recommended for the applications that use this gem. You have to set the
|
|
333
|
+
appropriate password for your MySQL user.
|
|
334
|
+
|
|
335
|
+
Save `spec/rails_app/features/config.yml.example` as
|
|
336
|
+
`spec/rails_app/features/config.yml` and edit it to set values for an existent
|
|
337
|
+
BigBlueButton server. You will need it to run the integration tests. For more
|
|
338
|
+
information see the page
|
|
339
|
+
[Testing](https://github.com/mconf/bigbluebutton_rails/wiki/Testing) in our
|
|
340
|
+
wiki.
|
|
341
|
+
|
|
342
|
+
Prepare the `rails_app` used for tests:
|
|
343
|
+
|
|
344
|
+
rake rails_app:install
|
|
345
|
+
rake rails_app:db SERVER=my-server # select a server you defined in 'config.yml'
|
|
346
|
+
rake rails_app:populate # to create fake data, optional
|
|
347
|
+
|
|
348
|
+
Run the tests:
|
|
349
|
+
|
|
350
|
+
rake spec
|
|
351
|
+
rake cucumber SERVER=my-server
|
|
352
|
+
|
|
353
|
+
Or simply:
|
|
354
|
+
|
|
355
|
+
rake SERVER=my-server
|
|
356
|
+
|
|
357
|
+
If you're adding migrations to the gem, test them with:
|
|
358
|
+
|
|
359
|
+
rake spec:migrations
|
|
360
|
+
|
|
361
|
+
Note: If you don't set the SERVER variable, the first server in `config.yml`
|
|
362
|
+
will be used.
|
|
363
|
+
|
|
364
|
+
You can also start the test application and navigate to `localhost:3000` to
|
|
365
|
+
check it:
|
|
366
|
+
|
|
367
|
+
cd spec/rails_app/
|
|
368
|
+
rails server
|
|
369
|
+
|
|
370
|
+
If you need to keep track of meetings, run the resque workers with:
|
|
371
|
+
|
|
372
|
+
rake resque:work QUEUE='bigbluebutton_rails'
|
|
373
|
+
|
|
374
|
+
Develop. :)
|
|
375
|
+
|
|
376
|
+
If you want your code to be integrated in this repository, please fork it,
|
|
377
|
+
create a branch with your modifications and submit a pull request.
|
|
378
|
+
|
|
379
|
+
* See more about testing [in our wiki page](https://github.com/mconf/bigbluebutton_rails/wiki/Testing).
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
### Test Coverage
|
|
383
|
+
|
|
384
|
+
Coverage is analyzed by default when you run:
|
|
385
|
+
|
|
386
|
+
rake spec
|
|
387
|
+
|
|
388
|
+
Run it and look at the file `coverage/index.html`.
|
|
389
|
+
|
|
390
|
+
### Best Practices
|
|
391
|
+
|
|
392
|
+
We use the gem `rails_best_practices` to get some nice tips on how to improve
|
|
393
|
+
the code.
|
|
394
|
+
|
|
395
|
+
Run:
|
|
396
|
+
|
|
397
|
+
rake best_practices
|
|
398
|
+
|
|
399
|
+
And look at the file `rails_best_practices_output.html` to see the tips.
|
|
400
|
+
|
|
401
|
+
## License
|
|
402
|
+
|
|
403
|
+
Distributed under The MIT License (MIT). See
|
|
404
|
+
[LICENSE](https://github.com/mconf/bigbluebutton_rails/blob/master/LICENSE).
|
|
405
|
+
|
|
406
|
+
## Contact
|
|
407
|
+
|
|
408
|
+
This project is developed as part of Mconf (http://mconf.org).
|
|
409
|
+
|
|
410
|
+
Mailing list:
|
|
411
|
+
* mconf-dev@googlegroups.com
|
|
412
|
+
|
|
413
|
+
Contact:
|
|
414
|
+
* Mconf: A scalable opensource multiconference system for web and mobile devices
|
|
415
|
+
* PRAV Labs - UFRGS - Porto Alegre - Brazil
|
|
416
|
+
* http://www.inf.ufrgs.br/prav/gtmconf
|
data/Rakefile
CHANGED
|
@@ -7,7 +7,7 @@ require 'cucumber'
|
|
|
7
7
|
require 'cucumber/rake/task'
|
|
8
8
|
|
|
9
9
|
desc 'Default: run specs and features.'
|
|
10
|
-
task :default => [:spec
|
|
10
|
+
task :default => [:spec]
|
|
11
11
|
|
|
12
12
|
RSpec::Core::RakeTask.new(:spec)
|
|
13
13
|
|
|
@@ -15,8 +15,8 @@ desc 'Generate documentation.'
|
|
|
15
15
|
RDoc::Task.new do |rdoc|
|
|
16
16
|
rdoc.rdoc_dir = 'rdoc'
|
|
17
17
|
rdoc.title = 'BigBlueButton on Rails'
|
|
18
|
-
rdoc.rdoc_files.include('README.
|
|
19
|
-
rdoc.rdoc_files.include('CHANGELOG.
|
|
18
|
+
rdoc.rdoc_files.include('README.md')
|
|
19
|
+
rdoc.rdoc_files.include('CHANGELOG.md')
|
|
20
20
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
21
21
|
rdoc.rdoc_files.include('app/**/*.rb')
|
|
22
22
|
end
|
|
@@ -62,14 +62,12 @@ namespace :rails_app do
|
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
task :cucumber do
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
sh "bundle exec cucumber features/"
|
|
68
|
-
end
|
|
65
|
+
# Disable all features that need the bot. It isn't working since BigBlueButton 0.81.
|
|
66
|
+
tags = "~@need-bot"
|
|
69
67
|
|
|
70
68
|
puts "* Dummy app features"
|
|
71
69
|
cd File.join(File.dirname(__FILE__), "spec", "rails_app")
|
|
72
|
-
sh "bundle exec cucumber features/"
|
|
70
|
+
sh "bundle exec cucumber features/ --tags #{tags}"
|
|
73
71
|
cd File.dirname(__FILE__)
|
|
74
72
|
end
|
|
75
73
|
|
|
@@ -84,9 +82,10 @@ namespace :spec do
|
|
|
84
82
|
cd "spec/rails_app/"
|
|
85
83
|
sh "bundle exec rails destroy bigbluebutton_rails:install"
|
|
86
84
|
sh "bundle exec rails generate bigbluebutton_rails:install 0.0.4"
|
|
87
|
-
sh "bundle exec rails generate bigbluebutton_rails:install 0.0.5 --migration-only"
|
|
88
|
-
sh "bundle exec rails generate bigbluebutton_rails:install 1.3.0 --migration-only"
|
|
89
|
-
sh "bundle exec rails generate bigbluebutton_rails:install 1.4.0 --migration-only"
|
|
85
|
+
sh "bundle exec rails generate bigbluebutton_rails:install 0.0.5 --migration-only --force"
|
|
86
|
+
sh "bundle exec rails generate bigbluebutton_rails:install 1.3.0 --migration-only --force"
|
|
87
|
+
sh "bundle exec rails generate bigbluebutton_rails:install 1.4.0 --migration-only --force"
|
|
88
|
+
sh "bundle exec rails generate bigbluebutton_rails:install 2.0.0 --migration-only --force"
|
|
90
89
|
|
|
91
90
|
sh "bundle exec rake db:drop RAILS_ENV=test"
|
|
92
91
|
sh "bundle exec rake db:create RAILS_ENV=test"
|
|
@@ -95,9 +94,10 @@ namespace :spec do
|
|
|
95
94
|
|
|
96
95
|
cd "../.."
|
|
97
96
|
Rake::Task["spec"].invoke
|
|
98
|
-
Rake::Task["cucumber"].invoke
|
|
97
|
+
# Rake::Task["cucumber"].invoke
|
|
99
98
|
|
|
100
99
|
cd "spec/rails_app/"
|
|
100
|
+
sh "bundle exec rails destroy bigbluebutton_rails:install 2.0.0 --migration-only"
|
|
101
101
|
sh "bundle exec rails destroy bigbluebutton_rails:install 1.4.0 --migration-only"
|
|
102
102
|
sh "bundle exec rails destroy bigbluebutton_rails:install 1.3.0 --migration-only"
|
|
103
103
|
sh "bundle exec rails destroy bigbluebutton_rails:install 0.0.5 --migration-only"
|