quorum 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +21 -0
- data/Gemfile +3 -11
- data/Gemfile.lock +62 -58
- data/HISTORY.md +9 -0
- data/README.rdoc +29 -19
- data/Rakefile +51 -0
- data/app/assets/javascripts/quorum/jobs.js +4 -0
- data/app/assets/javascripts/quorum/quorum.js +315 -239
- data/app/controllers/quorum/jobs_controller.rb +4 -4
- data/app/models/quorum/job.rb +1 -1
- data/app/views/quorum/jobs/new.html.erb +7 -7
- data/app/views/quorum/jobs/show.html.erb +22 -8
- data/app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb +2 -2
- data/app/views/quorum/jobs/templates/_blast_template.html.erb +2 -2
- data/lib/generators/templates/blast.rb +1 -13
- data/lib/generators/templates/logger.rb +4 -4
- data/lib/quorum/version.rb +1 -1
- data/lib/workers/quorum.rb +3 -3
- data/spec/dummy/quorum/blastdb/test.nin +0 -0
- data/spec/dummy/quorum/blastdb/test.pin +0 -0
- data/spec/dummy/quorum/lib/search_tools/blast.rb +7 -19
- data/spec/javascripts/fixtures/quorum_tabs.html +5 -0
- data/spec/javascripts/quorum_spec.js +187 -12
- data/spec/requests/jobs_spec.rb +22 -3
- data/spec/templates/logger_spec.rb +3 -3
- data/vendor/assets/javascripts/underscore-min.js +27 -25
- metadata +6 -5
data/.travis.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 1.9.2
|
4
|
+
- 1.9.3
|
5
|
+
gemfile:
|
6
|
+
- gemfiles/Gemfile.rails-3.1.x
|
7
|
+
- gemfiles/Gemfile.rails-3.2.x
|
8
|
+
before_install:
|
9
|
+
- sudo apt-get update
|
10
|
+
- sudo apt-get install ncbi-blast+ emboss
|
11
|
+
before_script:
|
12
|
+
- "export DISPLAY=:99.0"
|
13
|
+
- "sh -e /etc/init.d/xvfb start"
|
14
|
+
- bundle install
|
15
|
+
- mysql -e "create database quorum_test;"
|
16
|
+
- "rake travis:create_db_config"
|
17
|
+
- "rake app:db:schema:load"
|
18
|
+
script: "rake travis:spec"
|
19
|
+
notifications:
|
20
|
+
email:
|
21
|
+
- "kas@ncgr.org"
|
data/Gemfile
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
# Declare your gem's dependencies in quorum.gemspec.
|
4
|
-
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
-
# development dependencies will be added by default to the :development group.
|
6
3
|
gemspec
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# your gem to rubygems.org.
|
12
|
-
|
13
|
-
# To use debugger
|
14
|
-
# gem 'ruby-debug19', :require => 'ruby-debug'
|
15
|
-
|
5
|
+
group :test do
|
6
|
+
gem 'rake', '~> 0.9.2'
|
7
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
quorum (0.3.
|
4
|
+
quorum (0.3.2)
|
5
5
|
bio-blastxmlparser (~> 1.0.1)
|
6
6
|
jquery-rails
|
7
7
|
net-ssh (~> 2.3.0)
|
@@ -12,38 +12,39 @@ PATH
|
|
12
12
|
GEM
|
13
13
|
remote: http://rubygems.org/
|
14
14
|
specs:
|
15
|
-
actionmailer (3.2.
|
16
|
-
actionpack (= 3.2.
|
17
|
-
mail (~> 2.4.
|
18
|
-
actionpack (3.2.
|
19
|
-
activemodel (= 3.2.
|
20
|
-
activesupport (= 3.2.
|
15
|
+
actionmailer (3.2.6)
|
16
|
+
actionpack (= 3.2.6)
|
17
|
+
mail (~> 2.4.4)
|
18
|
+
actionpack (3.2.6)
|
19
|
+
activemodel (= 3.2.6)
|
20
|
+
activesupport (= 3.2.6)
|
21
21
|
builder (~> 3.0.0)
|
22
22
|
erubis (~> 2.7.0)
|
23
23
|
journey (~> 1.0.1)
|
24
24
|
rack (~> 1.4.0)
|
25
|
-
rack-cache (~> 1.
|
25
|
+
rack-cache (~> 1.2)
|
26
26
|
rack-test (~> 0.6.1)
|
27
|
-
sprockets (~> 2.1.
|
28
|
-
activemodel (3.2.
|
29
|
-
activesupport (= 3.2.
|
27
|
+
sprockets (~> 2.1.3)
|
28
|
+
activemodel (3.2.6)
|
29
|
+
activesupport (= 3.2.6)
|
30
30
|
builder (~> 3.0.0)
|
31
|
-
activerecord (3.2.
|
32
|
-
activemodel (= 3.2.
|
33
|
-
activesupport (= 3.2.
|
31
|
+
activerecord (3.2.6)
|
32
|
+
activemodel (= 3.2.6)
|
33
|
+
activesupport (= 3.2.6)
|
34
34
|
arel (~> 3.0.2)
|
35
35
|
tzinfo (~> 0.3.29)
|
36
|
-
activeresource (3.2.
|
37
|
-
activemodel (= 3.2.
|
38
|
-
activesupport (= 3.2.
|
39
|
-
activesupport (3.2.
|
36
|
+
activeresource (3.2.6)
|
37
|
+
activemodel (= 3.2.6)
|
38
|
+
activesupport (= 3.2.6)
|
39
|
+
activesupport (3.2.6)
|
40
40
|
i18n (~> 0.6)
|
41
41
|
multi_json (~> 1.0)
|
42
|
+
addressable (2.2.8)
|
42
43
|
arel (3.0.2)
|
43
44
|
bio-blastxmlparser (1.0.1)
|
44
45
|
bio-logger (>= 1.0.0)
|
45
46
|
nokogiri (>= 1.5.0)
|
46
|
-
bio-logger (1.0.
|
47
|
+
bio-logger (1.0.1)
|
47
48
|
log4r (>= 1.1.9)
|
48
49
|
builder (3.0.0)
|
49
50
|
capybara (1.1.2)
|
@@ -53,9 +54,9 @@ GEM
|
|
53
54
|
rack-test (>= 0.5.4)
|
54
55
|
selenium-webdriver (~> 2.0)
|
55
56
|
xpath (~> 0.1.4)
|
56
|
-
childprocess (0.3.
|
57
|
+
childprocess (0.3.2)
|
57
58
|
ffi (~> 1.0.6)
|
58
|
-
database_cleaner (0.
|
59
|
+
database_cleaner (0.8.0)
|
59
60
|
diff-lcs (1.1.3)
|
60
61
|
erubis (2.7.0)
|
61
62
|
factory_girl (2.6.4)
|
@@ -66,27 +67,29 @@ GEM
|
|
66
67
|
ffi (1.0.11)
|
67
68
|
hike (1.2.1)
|
68
69
|
i18n (0.6.0)
|
69
|
-
jasmine (1.
|
70
|
-
jasmine-core (>= 1.
|
71
|
-
rack (
|
70
|
+
jasmine (1.2.0)
|
71
|
+
jasmine-core (>= 1.2.0)
|
72
|
+
rack (~> 1.0)
|
72
73
|
rspec (>= 1.3.1)
|
73
74
|
selenium-webdriver (>= 0.1.3)
|
74
|
-
jasmine-core (1.
|
75
|
-
journey (1.0.
|
76
|
-
jquery-rails (2.0.
|
75
|
+
jasmine-core (1.2.0)
|
76
|
+
journey (1.0.4)
|
77
|
+
jquery-rails (2.0.2)
|
77
78
|
railties (>= 3.2.0, < 5.0)
|
78
79
|
thor (~> 0.14)
|
79
|
-
json (1.
|
80
|
+
json (1.7.3)
|
81
|
+
libwebsocket (0.1.3)
|
82
|
+
addressable
|
80
83
|
log4r (1.1.10)
|
81
84
|
mail (2.4.4)
|
82
85
|
i18n (>= 0.4.0)
|
83
86
|
mime-types (~> 1.16)
|
84
87
|
treetop (~> 1.4.8)
|
85
|
-
mime-types (1.
|
86
|
-
multi_json (1.
|
88
|
+
mime-types (1.19)
|
89
|
+
multi_json (1.3.6)
|
87
90
|
mysql2 (0.3.11)
|
88
91
|
net-ssh (2.3.0)
|
89
|
-
nokogiri (1.5.
|
92
|
+
nokogiri (1.5.4)
|
90
93
|
polyglot (0.3.3)
|
91
94
|
rack (1.4.1)
|
92
95
|
rack-cache (1.2)
|
@@ -97,21 +100,21 @@ GEM
|
|
97
100
|
rack
|
98
101
|
rack-test (0.6.1)
|
99
102
|
rack (>= 1.0)
|
100
|
-
rails (3.2.
|
101
|
-
actionmailer (= 3.2.
|
102
|
-
actionpack (= 3.2.
|
103
|
-
activerecord (= 3.2.
|
104
|
-
activeresource (= 3.2.
|
105
|
-
activesupport (= 3.2.
|
103
|
+
rails (3.2.6)
|
104
|
+
actionmailer (= 3.2.6)
|
105
|
+
actionpack (= 3.2.6)
|
106
|
+
activerecord (= 3.2.6)
|
107
|
+
activeresource (= 3.2.6)
|
108
|
+
activesupport (= 3.2.6)
|
106
109
|
bundler (~> 1.0)
|
107
|
-
railties (= 3.2.
|
108
|
-
railties (3.2.
|
109
|
-
actionpack (= 3.2.
|
110
|
-
activesupport (= 3.2.
|
110
|
+
railties (= 3.2.6)
|
111
|
+
railties (3.2.6)
|
112
|
+
actionpack (= 3.2.6)
|
113
|
+
activesupport (= 3.2.6)
|
111
114
|
rack-ssl (~> 1.3.2)
|
112
115
|
rake (>= 0.8.7)
|
113
116
|
rdoc (~> 3.4)
|
114
|
-
thor (
|
117
|
+
thor (>= 0.14.6, < 2.0)
|
115
118
|
rake (0.9.2.2)
|
116
119
|
rdoc (3.12)
|
117
120
|
json (~> 1.4)
|
@@ -128,42 +131,42 @@ GEM
|
|
128
131
|
resque-result (1.0.1)
|
129
132
|
resque (~> 1.9)
|
130
133
|
resque-meta (~> 1.0)
|
131
|
-
resque_spec (0.
|
134
|
+
resque_spec (0.12.2)
|
132
135
|
resque (>= 1.19.0)
|
133
136
|
rspec (>= 2.5.0)
|
134
|
-
rspec (2.
|
135
|
-
rspec-core (~> 2.
|
136
|
-
rspec-expectations (~> 2.
|
137
|
-
rspec-mocks (~> 2.
|
138
|
-
rspec-core (2.
|
139
|
-
rspec-expectations (2.
|
137
|
+
rspec (2.10.0)
|
138
|
+
rspec-core (~> 2.10.0)
|
139
|
+
rspec-expectations (~> 2.10.0)
|
140
|
+
rspec-mocks (~> 2.10.0)
|
141
|
+
rspec-core (2.10.1)
|
142
|
+
rspec-expectations (2.10.0)
|
140
143
|
diff-lcs (~> 1.1.3)
|
141
|
-
rspec-mocks (2.
|
142
|
-
rspec-rails (2.
|
144
|
+
rspec-mocks (2.10.1)
|
145
|
+
rspec-rails (2.10.1)
|
143
146
|
actionpack (>= 3.0)
|
144
147
|
activesupport (>= 3.0)
|
145
148
|
railties (>= 3.0)
|
146
|
-
rspec (~> 2.
|
147
|
-
rubyzip (0.9.
|
148
|
-
selenium-webdriver (2.
|
149
|
+
rspec (~> 2.10.0)
|
150
|
+
rubyzip (0.9.9)
|
151
|
+
selenium-webdriver (2.24.0)
|
149
152
|
childprocess (>= 0.2.5)
|
150
|
-
|
153
|
+
libwebsocket (~> 0.1.3)
|
151
154
|
multi_json (~> 1.0)
|
152
155
|
rubyzip
|
153
156
|
sinatra (1.3.2)
|
154
157
|
rack (~> 1.3, >= 1.3.6)
|
155
158
|
rack-protection (~> 1.2)
|
156
159
|
tilt (~> 1.3, >= 1.3.3)
|
157
|
-
sprockets (2.1.
|
160
|
+
sprockets (2.1.3)
|
158
161
|
hike (~> 1.2)
|
159
162
|
rack (~> 1.0)
|
160
163
|
tilt (~> 1.1, != 1.3.0)
|
161
|
-
thor (0.
|
164
|
+
thor (0.15.3)
|
162
165
|
tilt (1.3.3)
|
163
166
|
treetop (1.4.10)
|
164
167
|
polyglot
|
165
168
|
polyglot (>= 0.3.1)
|
166
|
-
tzinfo (0.3.
|
169
|
+
tzinfo (0.3.33)
|
167
170
|
vegas (0.1.11)
|
168
171
|
rack (>= 1.0.0)
|
169
172
|
xpath (0.1.4)
|
@@ -179,5 +182,6 @@ DEPENDENCIES
|
|
179
182
|
jasmine (~> 1.1)
|
180
183
|
mysql2 (~> 0.3.11)
|
181
184
|
quorum!
|
185
|
+
rake (~> 0.9.2)
|
182
186
|
resque_spec (~> 0.8)
|
183
187
|
rspec-rails (~> 2.6)
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.3.2 (2012-06--22)
|
2
|
+
|
3
|
+
* Added support for user defined callback in QUORUM.pollResults().
|
4
|
+
Useful if user chooses to define their own view template(s).
|
5
|
+
See app/assets/javascripts/quorum/quorum.js and
|
6
|
+
app/views/quorum/jobs/show.html.erb for more information.
|
7
|
+
* JS bug fixes.
|
8
|
+
* Added specs and updated gems.
|
9
|
+
|
1
10
|
## 0.3.1 (2012-04-02)
|
2
11
|
|
3
12
|
* Added quorum layouts to quorum:views generator.
|
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Quorum
|
1
|
+
= Quorum {<img src="https://secure.travis-ci.org/ncgr/quorum.png?branch=master"alt="Build Status" />}[http://travis-ci.org/ncgr/quorum]
|
2
2
|
|
3
3
|
A flexible bioinformatics search tool.
|
4
4
|
|
@@ -9,6 +9,7 @@ bioinformatics search tools.
|
|
9
9
|
|
10
10
|
Dependencies:
|
11
11
|
|
12
|
+
* Ruby >= 1.9.2
|
12
13
|
* Rails >= 3.1.0
|
13
14
|
* Redis >= 0.900 for Resque (https://github.com/defunkt/resque)
|
14
15
|
* NCBI Blast+ (ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST)
|
@@ -162,9 +163,10 @@ Follow the steps below to execute Quorum remotely via Net::SSH.
|
|
162
163
|
* Ensure you have supplied the necessary information in
|
163
164
|
"config/quorum_settings.yml" to execute Quorum remotely.
|
164
165
|
|
165
|
-
|
166
|
-
|
167
|
-
|
166
|
+
blast:
|
167
|
+
remote: true
|
168
|
+
ssh_host: remote.machine.org
|
169
|
+
ssh_user: remote_user
|
168
170
|
|
169
171
|
Net::SSH.start() optional params (http://net-ssh.github.com/ssh/v2/api/index.html)
|
170
172
|
|
@@ -224,7 +226,7 @@ To override Quorum's default images, run the generator.
|
|
224
226
|
A copy of Quorum's images can be found in your application under
|
225
227
|
"app/assets/images/quorum/".
|
226
228
|
|
227
|
-
|
229
|
+
==== jQuery UI
|
228
230
|
|
229
231
|
Don't like Quorum's jQuery UI theme? Override it!
|
230
232
|
|
@@ -233,34 +235,36 @@ Don't like Quorum's jQuery UI theme? Override it!
|
|
233
235
|
* Replace Quorum's theme in "app/assets/{stylesheets:images}/quorum" with
|
234
236
|
your own.
|
235
237
|
|
236
|
-
Don't plan on supporting all of Quorum's alogrithms?
|
237
|
-
|
238
|
-
and
|
238
|
+
==== Don't plan on supporting all of Quorum's alogrithms?
|
239
|
+
|
240
|
+
Override Quorum's views and comment out any unwanted algorithms in
|
241
|
+
"app/views/quorum/jobs/new.html.erb" and
|
242
|
+
"app/views/quorum/jobs/show.html.erb".
|
239
243
|
|
240
244
|
For example:
|
241
245
|
|
242
246
|
Remove Blastp in "app/views/quorum/jobs/new.html.erb"
|
243
247
|
|
244
|
-
|
245
|
-
|
248
|
+
<%# Search Algorithms %>
|
249
|
+
<%# Comment out an algorithm below to remove it from the form. %>
|
246
250
|
|
247
|
-
|
251
|
+
<%# blastn %>
|
248
252
|
<%= render :partial => "quorum/jobs/form/blastn_form", :locals => {
|
249
253
|
:f => f, :blast_dbs => @blast_dbs } %>
|
250
254
|
|
251
|
-
|
255
|
+
<%# blastx %>
|
252
256
|
<%= render :partial => "quorum/jobs/form/blastx_form", :locals => {
|
253
257
|
:f => f, :blast_dbs => @blast_dbs } %>
|
254
258
|
|
255
|
-
|
259
|
+
<%# tblastn %>
|
256
260
|
<%= render :partial => "quorum/jobs/form/tblastn_form", :locals => {
|
257
261
|
:f => f, :blast_dbs => @blast_dbs } %>
|
258
262
|
|
259
|
-
|
263
|
+
<%# blastp %>
|
260
264
|
<% render :partial => "quorum/jobs/form/blastp_form", :locals => {
|
261
265
|
:f => f, :blast_dbs => @blast_dbs } %>
|
262
266
|
|
263
|
-
|
267
|
+
<%# End Search Algorithms %>
|
264
268
|
|
265
269
|
Remove Blastp in "app/views/quorum/jobs/show.html.erb"
|
266
270
|
|
@@ -269,12 +273,12 @@ Remove Blastp in "app/views/quorum/jobs/show.html.erb"
|
|
269
273
|
<li><a href="#tabs-1">Blastn</a></li>
|
270
274
|
<li><a href="#tabs-2">Blastx</a></li>
|
271
275
|
<li><a href="#tabs-3">Tblastn</a></li>
|
272
|
-
|
276
|
+
<%#
|
273
277
|
<li><a href="#tabs-4">Blastp</a></li>
|
274
|
-
|
278
|
+
%>
|
275
279
|
</ul>
|
276
280
|
|
277
|
-
|
281
|
+
<%# Search results per algorithm %>
|
278
282
|
<div id="tabs-1">
|
279
283
|
<h2>Blastn</h2>
|
280
284
|
<div id="blastn-results">
|
@@ -306,6 +310,12 @@ Remove Blastp in "app/views/quorum/jobs/show.html.erb"
|
|
306
310
|
-->
|
307
311
|
</div>
|
308
312
|
|
313
|
+
==== Don't like Quorum's default show template?
|
314
|
+
|
315
|
+
Override Quorum's views and specify your own JavaScript callback function!
|
316
|
+
|
317
|
+
See "app/views/quorum/show.html.erb" for more details.
|
318
|
+
|
309
319
|
=== Redis
|
310
320
|
|
311
321
|
For detailed Redis installation instructions, follow the links below.
|
@@ -321,7 +331,7 @@ the link below.
|
|
321
331
|
|
322
332
|
* Resque (https://github.com/defunkt/resque)
|
323
333
|
|
324
|
-
|
334
|
+
==== Resque Web Interface
|
325
335
|
|
326
336
|
Quorum mounts Resque's web interface by default via
|
327
337
|
|
data/Rakefile
CHANGED
@@ -29,3 +29,54 @@ task :default => :spec
|
|
29
29
|
|
30
30
|
Bundler::GemHelper.install_tasks
|
31
31
|
|
32
|
+
# Travis Tasks
|
33
|
+
namespace :travis do
|
34
|
+
# Specs
|
35
|
+
task :spec do
|
36
|
+
Rake::Task["travis:create_dirs"].execute
|
37
|
+
["rake spec", "rake app:jasmine:ci JASMINE_PORT=53331"].each do |cmd|
|
38
|
+
puts "Starting to run #{cmd}..."
|
39
|
+
system("export DISPLAY=:99.0 && bundle exec #{cmd}")
|
40
|
+
raise "#{cmd} failed!" unless $?.exitstatus == 0
|
41
|
+
end
|
42
|
+
Rake::Task["travis:remove_db_config"].execute
|
43
|
+
end
|
44
|
+
|
45
|
+
# Create spec/dummy/config/database.yml for Travis.
|
46
|
+
task :create_db_config do
|
47
|
+
config = File.expand_path("../spec/dummy/config", __FILE__)
|
48
|
+
File.open(File.join(config, "database.yml"), "w+") do |file|
|
49
|
+
file.puts "test:\n adapter: mysql2\n database: quorum_test\n" <<
|
50
|
+
" username: root\n password:\n host: localhost\n encoding: utf8"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Remove spec/dummy/config/database.yml after Travis.
|
55
|
+
task :remove_db_config do
|
56
|
+
config = File.expand_path("../spec/dummy/config", __FILE__)
|
57
|
+
File.delete(File.join(config, "database.yml"))
|
58
|
+
end
|
59
|
+
|
60
|
+
# Create necessary directories for test. Mimic a real app install
|
61
|
+
# via rails g quorum:install.
|
62
|
+
#
|
63
|
+
# The directories below are not in the git repo.
|
64
|
+
task :create_dirs do
|
65
|
+
app = File.expand_path("../spec/dummy", __FILE__)
|
66
|
+
quorum = File.expand_path("../spec/dummy/quorum", __FILE__)
|
67
|
+
|
68
|
+
app_tmp = File.join(app, "tmp")
|
69
|
+
app_pids = File.join(app_tmp, "pids")
|
70
|
+
app_cache = File.join(app_tmp, "cache")
|
71
|
+
|
72
|
+
Dir.mkdir(app_tmp) unless File.directory?(app_tmp)
|
73
|
+
Dir.mkdir(app_pids) unless File.directory?(app_pids)
|
74
|
+
Dir.mkdir(app_cache) unless File.directory?(app_cache)
|
75
|
+
|
76
|
+
quorum_log = File.join(quorum, "log")
|
77
|
+
quorum_tmp = File.join(quorum, "tmp")
|
78
|
+
|
79
|
+
Dir.mkdir(quorum_log) unless File.directory?(quorum_log)
|
80
|
+
Dir.mkdir(quorum_tmp) unless File.directory?(quorum_tmp)
|
81
|
+
end
|
82
|
+
end
|
@@ -59,6 +59,10 @@ $(function() {
|
|
59
59
|
form.autoHint('removeHints');
|
60
60
|
});
|
61
61
|
|
62
|
+
$(window).unload(function() {
|
63
|
+
$('input[type=submit]', 'form').val('Submit').removeAttr('disabled');
|
64
|
+
});
|
65
|
+
|
62
66
|
// Reset form.
|
63
67
|
$('#quorum_job_reset').click(function() {
|
64
68
|
$('textarea').val('');
|