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.
Files changed (99) hide show
  1. data/.gitignore +2 -0
  2. data/.rspec +2 -2
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.rdoc +31 -6
  5. data/Gemfile +13 -3
  6. data/Gemfile.lock +88 -42
  7. data/README.rdoc +84 -15
  8. data/Rakefile +22 -25
  9. data/{TODO_08 → TODO.rdoc} +6 -2
  10. data/app/assets/images/badges/apple_store_en.png +0 -0
  11. data/app/assets/images/badges/apple_store_pt-br.png +0 -0
  12. data/app/assets/images/badges/google_play_en.png +0 -0
  13. data/app/assets/images/badges/google_play_pt-br.png +0 -0
  14. data/app/controllers/bigbluebutton/recordings_controller.rb +25 -10
  15. data/app/controllers/bigbluebutton/rooms_controller.rb +158 -141
  16. data/app/controllers/bigbluebutton/servers_controller.rb +25 -12
  17. data/app/helpers/bigbluebutton_rails_helper.rb +20 -0
  18. data/app/models/bigbluebutton_meeting.rb +28 -0
  19. data/app/models/bigbluebutton_metadata.rb +2 -2
  20. data/app/models/bigbluebutton_playback_format.rb +2 -2
  21. data/app/models/bigbluebutton_recording.rb +29 -4
  22. data/app/models/bigbluebutton_room.rb +153 -22
  23. data/app/models/bigbluebutton_room_options.rb +46 -0
  24. data/app/models/bigbluebutton_server.rb +4 -2
  25. data/app/views/bigbluebutton/recordings/_form.html.erb +4 -0
  26. data/app/views/bigbluebutton/recordings/_recordings.html.erb +1 -0
  27. data/app/views/bigbluebutton/recordings/show.html.erb +5 -0
  28. data/app/views/bigbluebutton/rooms/join_mobile.html.erb +29 -5
  29. data/app/workers/bigbluebutton_meeting_updater.rb +31 -0
  30. data/bigbluebutton_rails.gemspec +5 -1
  31. data/config/locales/en.yml +6 -5
  32. data/config/schedule.rb +4 -0
  33. data/lib/bigbluebutton_rails/controller_methods.rb +29 -10
  34. data/lib/bigbluebutton_rails/internal_controller_methods.rb +56 -0
  35. data/lib/bigbluebutton_rails/rails/routes.rb +1 -5
  36. data/lib/bigbluebutton_rails/version.rb +1 -1
  37. data/lib/bigbluebutton_rails.rb +11 -0
  38. data/lib/generators/bigbluebutton_rails/templates/migration.rb +28 -0
  39. data/lib/generators/bigbluebutton_rails/templates/migration_1_4_0.rb +37 -0
  40. data/lib/tasks/bigbluebutton_rails/meetings.rake +22 -0
  41. data/lib/tasks/bigbluebutton_rails/recordings.rake +2 -1
  42. data/spec/classes/bigbluebutton_attendee_spec.rb +1 -1
  43. data/spec/controllers/bigbluebutton/recordings_controller_json_responses_spec.rb +10 -9
  44. data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +103 -16
  45. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +15 -5
  46. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +17 -12
  47. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +485 -432
  48. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +20 -13
  49. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +174 -16
  50. data/spec/factories/bigbluebutton_meeting.rb +13 -0
  51. data/spec/factories/bigbluebutton_recording.rb +4 -2
  52. data/spec/factories/bigbluebutton_room.rb +5 -1
  53. data/spec/factories/bigbluebutton_room_options.rb +6 -0
  54. data/spec/generators/install_generator_spec.rb +1 -1
  55. data/spec/generators/views_generator_spec.rb +0 -1
  56. data/spec/lib/tasks/meetings_rake_spec.rb +5 -0
  57. data/spec/lib/tasks/recordings_rake_spec.rb +5 -0
  58. data/spec/models/bigbluebutton_meeting_db_spec.rb +24 -0
  59. data/spec/models/bigbluebutton_meeting_spec.rb +52 -0
  60. data/spec/models/bigbluebutton_metadata_db_spec.rb +2 -0
  61. data/spec/models/bigbluebutton_metadata_spec.rb +18 -22
  62. data/spec/models/bigbluebutton_playback_format_db_spec.rb +2 -0
  63. data/spec/models/bigbluebutton_playback_format_spec.rb +0 -4
  64. data/spec/models/bigbluebutton_recording_db_spec.rb +3 -0
  65. data/spec/models/bigbluebutton_recording_spec.rb +69 -16
  66. data/spec/models/bigbluebutton_room_db_spec.rb +2 -0
  67. data/spec/models/bigbluebutton_room_options_db_spec.rb +16 -0
  68. data/spec/models/bigbluebutton_room_options_spec.rb +206 -0
  69. data/spec/models/bigbluebutton_room_spec.rb +420 -80
  70. data/spec/models/bigbluebutton_server_db_spec.rb +2 -0
  71. data/spec/models/bigbluebutton_server_spec.rb +22 -24
  72. data/spec/rails_app/config/application.rb +3 -0
  73. data/spec/rails_app/config/database.yml.example +28 -0
  74. data/spec/rails_app/config/environments/test.rb +1 -1
  75. data/spec/rails_app/db/seeds.rb +1 -0
  76. data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +0 -2
  77. data/spec/rails_app/features/step_definitions/common_steps.rb +6 -0
  78. data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +0 -6
  79. data/spec/rails_app/features/support/locales.rb +4 -2
  80. data/spec/rails_app/features/support/paths.rb +0 -2
  81. data/spec/rails_app/features/support/templates.rb +2 -17
  82. data/spec/rails_app/lib/tasks/db/populate.rake +2 -0
  83. data/spec/rails_app/lib/tasks/resque.rake +3 -0
  84. data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +1 -10
  85. data/spec/routing/bigbluebutton/rooms_only_routing_spec.rb +1 -9
  86. data/spec/routing/bigbluebutton/rooms_routing_spec.rb +3 -31
  87. data/spec/spec_helper.rb +40 -24
  88. data/spec/support/matchers/array_with_key.rb +7 -0
  89. data/spec/support/matchers/array_without_key.rb +7 -0
  90. data/spec/support/matchers/delegate_matcher.rb +62 -0
  91. data/spec/support/matchers/respond_with_content_type.rb +8 -0
  92. data/spec/support/matchers/shoulda/assign_to_matcher.rb +131 -0
  93. data/spec/support/mocked_server.rb +2 -2
  94. data/spec/support/models/user.rb +11 -0
  95. data/spec/workers/bigbluebutton_meeting_updater_spec.rb +9 -0
  96. metadata +86 -16
  97. data/app/views/bigbluebutton/rooms/external.html.erb +0 -25
  98. data/spec/rails_app/config/database.yml +0 -25
  99. data/spec/rails_app/features/join_external_rooms.feature +0 -61
data/.gitignore CHANGED
@@ -5,6 +5,8 @@ pkg
5
5
  log
6
6
  *.gem
7
7
  spec/rails_app/features/config.yml
8
+ spec/rails_app/config/database.yml
8
9
  coverage/
9
10
  rails_best_practices_output.html
10
11
  bot.log
12
+ .bundle/
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --format progress
2
- --color
1
+ --format documentation
2
+ --color
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.9.3-p194
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
- * To learn how to migrate to 1.3.0 see: https://github.com/mconf/bigbluebutton_rails/wiki/Migrate-to-1.3.0
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 `:as` in router helpers (more at https://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Routes)
9
- * New option `:only` in router helpers (more at https://github.com/mconf/bigbluebutton_rails/wiki/How-to%3A-Routes)
10
- * Set the HTTP header "x-forwarded-for" with the IP of the client so servers can know who is creating/joining a meeting, for example.
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 (`#{SecureRandom.uuid}-#{Time.now.to_i}`). #734, #735.
13
- * Added logic to control who can create meetings (method called `bigbluebutton_can_create?`).
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
- gem "capybara-mechanize" # for remote requests
26
- gem "launchy"
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: 5ec55fa1e7bdbc67aa82fa244f5e852497aaf29b
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.3.0)
11
- bigbluebutton-api-ruby (~> 1.2.0)
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.2.0)
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.3.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.6)
64
- ffi (~> 1.0, >= 1.0.6)
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.1)
80
+ cucumber (1.3.2)
77
81
  builder (>= 2.1.2)
78
82
  diff-lcs (>= 1.1.3)
79
- gherkin (~> 2.11.0)
80
- json (>= 1.4.6)
81
- cucumber-rails (1.3.0)
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.1.8)
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.4)
88
- unf (~> 0.0.3)
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.11.5)
101
- json (>= 1.4.6)
102
- gherkin (2.11.5-java)
103
- json (>= 1.4.6)
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.5.1)
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 (~> 0.0, >= 0.0.9)
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
- net-http-digest_auth (1.2.1)
135
- net-http-persistent (2.8)
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
- rspec-core (2.12.0)
175
- rspec-expectations (2.12.0)
176
- diff-lcs (~> 1.1.3)
177
- rspec-mocks (2.12.0)
178
- rspec-rails (2.12.0)
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.12.0)
183
- rspec-expectations (~> 2.12.0)
184
- rspec-mocks (~> 2.12.0)
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.26.0)
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 (1.4.1)
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
- sqlite3 (1.3.6)
210
- sqlite3-ruby (1.3.3)
211
- sqlite3 (>= 1.3.3)
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.0.5)
258
+ unf (0.1.2)
222
259
  unf_ext
223
- unf (0.0.5-java)
224
- unf_ext (0.0.5)
225
- webrobots (0.0.13)
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.2)
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
- capybara-mechanize
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
- sqlite3-ruby
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 "join" action.
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
- * Random meeting IDs to avoid problems with "end", timeouts and reuse of URLs.
15
- * Server activity monitor.
16
- * "On-the-fly" server selection when a meeting is started.
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 (modify config.xml, use bbb-conf, etc.).
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 *all* the following versions of BigBlueButton:
28
+ The current version of this gem supports <tt>all</tt> the following versions of BigBlueButton:
28
29
 
29
- * 0.8: Altough not all features are supported yet, such as pre-upload of slides. See {TODO_08}[https://github.com/mconf/bigbluebutton_rails/blob/master/TODO_08].
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.2
37
- * ruby-1.9.3
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 *Rails 3* only (should work on 3.0, 3.1 and 3.2).
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 configurations
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: