qa 0.1.0 → 0.2.1

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -23
  3. data/Rakefile +9 -6
  4. data/lib/generators/qa/install/USAGE +5 -0
  5. data/lib/generators/qa/install/install_generator.rb +13 -0
  6. data/lib/generators/qa/install/templates/config/oclcts-authorities.yml +24 -0
  7. data/lib/qa/authorities/loc.rb +35 -18
  8. data/lib/qa/version.rb +1 -1
  9. data/spec/controllers/terms_controller_spec.rb +10 -10
  10. data/spec/fixtures/loc-response.txt +85 -2
  11. data/spec/internal/Gemfile +4 -6
  12. data/spec/internal/Gemfile.lock +42 -65
  13. data/spec/internal/config/application.rb +1 -1
  14. data/spec/internal/config/boot.rb +1 -1
  15. data/spec/internal/config/initializers/secret_token.rb +1 -1
  16. data/spec/internal/config/oclcts-authorities.yml +24 -0
  17. data/spec/internal/config/routes.rb +2 -0
  18. data/spec/internal/db/development.sqlite3 +0 -0
  19. data/spec/internal/db/migrate/20140611161143_create_qa_subject_mesh_terms.qa.rb +12 -0
  20. data/spec/internal/db/migrate/20140611161144_create_qa_mesh_tree.qa.rb +11 -0
  21. data/spec/internal/db/migrate/20140611161145_add_term_lower_to_qa_subject_mesh_terms.qa.rb +8 -0
  22. data/spec/internal/db/schema.rb +34 -0
  23. data/spec/internal/db/test.sqlite3 +0 -0
  24. data/spec/internal/lib/generators/test_app_generator.rb +13 -11
  25. data/spec/internal/log/development.log +212 -0
  26. data/spec/internal/public/robots.txt +1 -1
  27. data/spec/lib/authorities_loc_spec.rb +21 -0
  28. data/spec/spec_helper.rb +5 -1
  29. data/spec/test_app_templates/lib/generators/test_app_generator.rb +22 -0
  30. metadata +57 -24
  31. data/spec/support/lib/generators/test_app_generator.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a931f43dc836c7a6c3549214432edc8edced5aa
4
- data.tar.gz: 21320a07cbd96a225e366691a597e69d88b3b5d2
3
+ metadata.gz: 8822d1805cf5688f8efa87ccabaf20d5e84a07dd
4
+ data.tar.gz: 97edb3df48fa497fafaa6e82c7a98b793cbe952b
5
5
  SHA512:
6
- metadata.gz: 437eed2438b6c61245496ca8082693ba7ffb35bb6a0f464bb5dbf5c869c87bac1890490c58ef7e4f7364b31a588f5614a1e06a8609e74dcabf9e2f5be6d882b2
7
- data.tar.gz: a65f9e0c31b21174f37aa7e55a5e9509abdb67dfb8f382eafdd1bc17c484dabc08b77f9fc95c046cea019a27b802c7d8962a325ff8631c41c04ff85fafc78b97
6
+ metadata.gz: 4f271ed20bc568662f0f74a84804b6eb23c659f9894dc0719bd567210b501dec1a93c733d51aee9260519ee59ae1518e07726eaa56ad2716af0e3bd1adc20a5e
7
+ data.tar.gz: eb5de6d6f4f892d8661568a6e889cb22ca408acc2957a19a308261763383ab34fc1661dc35b2758775dcdde92d0f0d59b4c7f7867a4a8f77ecddf7d266778022
data/README.md CHANGED
@@ -34,9 +34,15 @@ Add the gem to your Gemfile
34
34
 
35
35
  gem 'qa'
36
36
 
37
- Add the engine to your config/routes.rb file
37
+ Run bundler
38
38
 
39
- mount Qa::Engine => '/qa'
39
+ bundle install
40
+
41
+ Install the gem to your application
42
+
43
+ rails generate qa:install
44
+
45
+ This will copy over some additional config files and add the engine's routes to your `config/route.rb`.
40
46
 
41
47
  Start questioning your authorities!
42
48
 
@@ -137,14 +143,16 @@ for the "states" sub-authority would be named states.yml.
137
143
  :term: Term 2
138
144
  :active: false
139
145
 
140
- # Medical Subject Headings (MeSH)
146
+ # Experimental Features
147
+
148
+ ## Medical Subject Headings (MeSH)
141
149
 
142
150
  Provides autocompletion of [MeSH terms](http://www.nlm.nih.gov/mesh/introduction.html). This
143
151
  implementation is simple, and only provides *descriptors* and does not implement *qualifiers* (in
144
152
  the technical MeSH sense of these terms). The terms are stored in a local database, which is then
145
153
  queried to provide the suggestions.
146
154
 
147
- ## Loading Terms
155
+ ### Loading Terms
148
156
 
149
157
  To import the mesh terms into the local database, first download the MeSH descriptor dump in ASCII
150
158
  format (see [http://www.nlm.nih.gov/mesh/filelist.html][]). Once you have this file, the rake task
@@ -154,25 +162,10 @@ format (see [http://www.nlm.nih.gov/mesh/filelist.html][]). Once you have this
154
162
 
155
163
  This may take a few minutes to finish.
156
164
 
157
- # TODOs
158
-
159
- * Provide show method to TermsController to return individual terms
160
-
161
- check the issue list for more...
162
-
163
- # Known Issues
164
-
165
- Some users have reported errors resulting from the curb gem. When performing queries, the application will crash with the error:
166
-
167
- Trace/BPT trap: 5
168
-
169
- The solution is to install the curb gem from the master branch on Github. To do this, add the following line to the Gemfile of your
170
- application:
171
-
172
- gem 'curb', github: 'taf2/curb'
173
-
174
165
  # Developer Notes
175
166
 
167
+ [How to Contribute](./CONTRIBUTING.md)
168
+
176
169
  To develop this gem, clone the repository, then run:
177
170
 
178
171
  bundle install
@@ -181,7 +174,15 @@ To develop this gem, clone the repository, then run:
181
174
  This will install the gems, create a dummy application under spec/internal and run the tests. After you've made changes, remove the entire spec/internal
182
175
  directory so that further tests and run against a new dummy application.
183
176
 
184
- # Authors
177
+ ## Dependencies and Compatability
178
+
179
+ Rails 4
180
+
181
+ # Help
182
+
183
+ For help with Questioning Authority, contact <hydra-tech@googlegroups.com>.
184
+
185
+ # Original Authors
185
186
 
186
187
  * [Stephen Anderson](https://github.com/scande3)
187
188
  * [Don Brower](https://github.com/dbrower)
@@ -195,4 +196,3 @@ directory so that further tests and run against a new dummy application.
195
196
  ### Special thanks to...
196
197
 
197
198
  [Jeremy Friesen](https://github.com/jeremyf) who gave us the name for our gem.
198
-
data/Rakefile CHANGED
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
3
-
4
- Dir.glob('tasks/*.rake').each { |r| import r }
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+ require 'engine_cart/rake_task'
5
5
 
6
- ENV["RAILS_ROOT"] ||= 'spec/internal'
6
+ RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- require 'rspec/core/rake_task'
8
+ desc "Run continuous integration build"
9
+ task :ci => ['engine_cart:generate'] do
10
+ Rake::Task['spec'].invoke
11
+ end
9
12
 
10
- task :default => [:spec]
13
+ task :default => :ci
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Installs QA into your rails application.
3
+
4
+ Example:
5
+ rails generate qa:install
@@ -0,0 +1,13 @@
1
+ class Qa::InstallGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../templates', __FILE__)
3
+
4
+ def inject_routes
5
+ insert_into_file "config/routes.rb", :after => ".draw do" do
6
+ %{\n mount Qa::Engine => '/qa'\n}
7
+ end
8
+ end
9
+
10
+ def copy_configs
11
+ copy_file "config/oclcts-authorities.yml", "config/oclcts-authorities.yml"
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ url-pattern:
2
+ prefix-query: http://tspilot.oclc.org/{authority-id}/?query=oclcts.rootHeading+exact+%22{query}*%22&version=1.1&operation=searchRetrieve&recordSchema=http%3A%2F%2Fzthes.z3950.org%2Fxml%2F1.0%2F&maximumRecords=10&startRecord=1&resultSetTTL=300&recordPacking=xml&recordXPath=&sortKeys=
3
+ id-lookup: http://tspilot.oclc.org/{authority-id}/?query=dc.identifier+exact+%22{id}%22&version=1.1&operation=searchRetrieve&recordSchema=http%3A%2F%2Fzthes.z3950.org%2Fxml%2F1.0%2F&maximumRecords=10&startRecord=1&resultSetTTL=300&recordPacking=xml&recordXPath=&sortKeys=
4
+ authorities:
5
+ lcgft:
6
+ name: Library of Congress Genre/Form Terms for Library and Archival Materials (LCGFT)
7
+ bisacsh:
8
+ name: Book Industry Study Group Subject Headings (BISAC®). Used with permission.
9
+ fast:
10
+ name: Faceted Application of Subject Terminology (FAST subject headings)
11
+ gsafd:
12
+ name: Form and genre headings for fiction and drama
13
+ lcshac:
14
+ name: Library of Congress AC Subject Headings
15
+ lcsh:
16
+ name: Library of Congress Subject Headings
17
+ mesh:
18
+ name: Medical Subject Headings (MeSH®)
19
+ lctgm:
20
+ name: "Thesaurus for graphic materials: TGM I, Subject terms"
21
+ gmgpc:
22
+ name: "Thesaurus for graphic materials: TGM II, Genre terms"
23
+ meta:
24
+ name: Controlled Vocabulary Metadata
@@ -15,7 +15,8 @@ module Qa::Authorities
15
15
  @response = nil
16
16
  return
17
17
  end
18
- q += '*'
18
+
19
+ q = URI.escape(q)
19
20
  authority_fragment = sub_authorityURL(sub_authority)
20
21
  query_url = "http://id.loc.gov/search/?q=#{q}&q=#{authority_fragment}&format=json"
21
22
  @raw_response = get_json(query_url)
@@ -89,26 +90,42 @@ module Qa::Authorities
89
90
  @sub_authorities ||= sub_authority_table.keys
90
91
  end
91
92
 
93
+ def parse_authority_response(raw_responses)
94
+ raw_responses.select {|response| response[0] == "atom:entry"}.map do |response|
95
+ loc_response_to_qa(response_to_struct(response))
96
+ end
97
+ end
92
98
 
93
- def parse_authority_response(raw_response)
94
- result = []
95
- raw_response.each do |single_response|
96
- next if single_response[0] != "atom:entry"
97
- id = nil
98
- label = ''
99
- single_response.each do |result_part|
100
- case result_part[0]
101
- when 'atom:title'
102
- label = result_part[2]
103
- when 'atom:id'
104
- id = result_part[2]
105
- end
99
+ # Converts most of the atom data into an OpenStruct object.
100
+ #
101
+ # Note that this is a pretty naive conversion. There should probably just
102
+ # be a class that properly translates and stores the various pieces of
103
+ # data, especially if this logic could be useful in other auth lookups.
104
+ def response_to_struct(response)
105
+ result = response.each_with_object({}) do |result_parts, result|
106
+ next unless result_parts[0]
107
+ key = result_parts[0].sub('atom:', '').sub('dcterms:', '')
108
+ info = result_parts[1]
109
+ val = result_parts[2]
110
+
111
+ case key
112
+ when 'title', 'id', 'name', 'updated', 'created'
113
+ result[key] = val
114
+ when 'link'
115
+ result["links"] ||= []
116
+ result["links"] << [info["type"], info["href"]]
106
117
  end
107
-
108
- id ||= label
109
- result << {"id"=>id, "label"=>label}
110
118
  end
111
- result
119
+
120
+ OpenStruct.new(result)
121
+ end
122
+
123
+ # Simple conversion from LoC-based struct to QA hash
124
+ def loc_response_to_qa(data)
125
+ {
126
+ "id" => data.id || data.title,
127
+ "label" => data.title
128
+ }
112
129
  end
113
130
 
114
131
  def find_record_in_response(raw_response, id)
data/lib/qa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Qa
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -2,37 +2,37 @@ require 'spec_helper'
2
2
 
3
3
  describe Qa::TermsController do
4
4
 
5
- before :each do
5
+ before do
6
6
  @routes = Qa::Engine.routes
7
7
  end
8
8
 
9
9
  describe "#index" do
10
10
 
11
- describe "error checking" do
11
+ context "with errors" do
12
12
 
13
13
  it "should return 400 if no vocabulary is specified" do
14
14
  get :index, { :vocab => nil}
15
- response.code.should == "400"
15
+ expect(response.code).to eq("400")
16
16
  end
17
17
 
18
18
  it "should return 400 if no query is specified" do
19
19
  get :index, { :q => nil}
20
- response.code.should == "400"
20
+ expect(response.code).to eq("400")
21
21
  end
22
22
 
23
23
  it "should return 400 if vocabulary is not valid" do
24
24
  get :index, { :q => "foo", :vocab => "bar" }
25
- response.code.should == "400"
25
+ expect(response.code).to eq("400")
26
26
  end
27
27
 
28
28
  it "should return 400 if sub_authority is not valid" do
29
29
  get :index, { :q => "foo", :vocab => "loc", :sub_authority => "foo" }
30
- response.code.should == "400"
30
+ expect(response.code).to eq("400")
31
31
  end
32
32
 
33
33
  end
34
34
 
35
- describe "successful queries" do
35
+ context "with successful queries" do
36
36
 
37
37
  before :each do
38
38
  stub_request(:get, "http://id.loc.gov/search/?format=json&q=").
@@ -45,17 +45,17 @@ describe Qa::TermsController do
45
45
 
46
46
  it "should return a set of terms for a tgnlang query" do
47
47
  get :index, {:q => "Tibetan", :vocab => "tgnlang" }
48
- response.should be_success
48
+ expect(response).to be_success
49
49
  end
50
50
 
51
51
  it "should not return 400 if vocabulary is valid" do
52
52
  get :index, { :q => "foo", :vocab => "loc" }
53
- response.code.should_not == "400"
53
+ expect(response.code).to_not eq("400")
54
54
  end
55
55
 
56
56
  it "should not return 400 if sub_authority is valid" do
57
57
  get :index, { :q => "foo", :vocab => "loc", :sub_authority => "relators" }
58
- response.code.should_not == "400"
58
+ expect(response.code).to_not eq("400")
59
59
  end
60
60
 
61
61
  end
@@ -43,7 +43,7 @@
43
43
  "xmlns:opensearch" : "http://a9.com/-/spec/opensearch/1.1/"
44
44
  }
45
45
  ,
46
- "1"
46
+ "2"
47
47
  ],
48
48
  [
49
49
  "opensearch:startIndex",
@@ -72,6 +72,89 @@
72
72
  {
73
73
  "xmlns:atom" : "http://www.w3.org/2005/Atom"
74
74
  }
75
+ ,
76
+ "Haw, Lily, 1890?-1915"
77
+ ],
78
+ [
79
+ "atom:link",
80
+ {
81
+ "xmlns:atom" : "http://www.w3.org/2005/Atom",
82
+ "rel" : "alternate",
83
+ "href" : "http://id.loc.gov/authorities/names/n2008008718"
84
+ }
85
+
86
+ ],
87
+ [
88
+ "atom:link",
89
+ {
90
+ "xmlns:atom" : "http://www.w3.org/2005/Atom",
91
+ "rel" : "alternate",
92
+ "type" : "application/rdf+xml",
93
+ "href" : "http://id.loc.gov/authorities/names/n2008008718.rdf"
94
+ }
95
+
96
+ ],
97
+ [
98
+ "atom:link",
99
+ {
100
+ "xmlns:atom" : "http://www.w3.org/2005/Atom",
101
+ "rel" : "alternate",
102
+ "type" : "application/json",
103
+ "href" : "http://id.loc.gov/authorities/names/n2008008718.json"
104
+ }
105
+
106
+ ],
107
+ [
108
+ "atom:id",
109
+ {
110
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
111
+ }
112
+ ,
113
+ "info:lc/authorities/names/n2008008718"
114
+ ],
115
+ [
116
+ "atom:author",
117
+ {
118
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
119
+ }
120
+ ,
121
+ [
122
+ "atom:name",
123
+ {
124
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
125
+ }
126
+ ,
127
+ "Library of Congress"
128
+ ]
129
+ ],
130
+ [
131
+ "atom:updated",
132
+ {
133
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
134
+ }
135
+ ,
136
+ "2008-03-05T00:00:00-04:00"
137
+ ],
138
+ [
139
+ "dcterms:created",
140
+ {
141
+ "xmlns:dcterms" : "http://purl.org/dc/terms/"
142
+ }
143
+ ,
144
+ "2008-02-05T00:00:00-04:00"
145
+ ]
146
+ ],
147
+ [
148
+ "atom:entry",
149
+ {
150
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
151
+ }
152
+ ,
153
+ [
154
+ "atom:title",
155
+ {
156
+ "xmlns:atom" : "http://www.w3.org/2005/Atom"
157
+ }
75
158
  ,
76
159
  "Hawaii"
77
160
  ],
@@ -144,4 +227,4 @@
144
227
  "1970-01-01T00:00:00-04:00"
145
228
  ]
146
229
  ]
147
- ]
230
+ ]
@@ -1,13 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
4
- gem 'rails', '4.0.3'
4
+ gem 'rails', '4.0.5'
5
5
 
6
6
  # Use sqlite3 as the database for Active Record
7
7
  gem 'sqlite3'
8
8
 
9
9
  # Use SCSS for stylesheets
10
- gem 'sass-rails', '~> 4.0.0'
10
+ gem 'sass-rails', '~> 4.0.2'
11
11
 
12
12
  # Use Uglifier as compressor for JavaScript assets
13
13
  gem 'uglifier', '>= 1.3.0'
@@ -33,7 +33,7 @@ group :doc do
33
33
  end
34
34
 
35
35
  # Use ActiveModel has_secure_password
36
- # gem 'bcrypt-ruby', '~> 3.1.2'
36
+ # gem 'bcrypt', '~> 3.1.7'
37
37
 
38
38
  # Use unicorn as the app server
39
39
  # gem 'unicorn'
@@ -43,6 +43,4 @@ end
43
43
 
44
44
  # Use debugger
45
45
  # gem 'debugger', group: [:development, :test]
46
- gem 'qa', :path=>'../../../questioning_authority'
47
- gem 'rspec-rails'
48
- gem 'webmock'
46
+ gem 'qa', :path => '/Users/awead/Projects/Github/projecthydra-labs/questioning_authority'
@@ -1,7 +1,7 @@
1
1
  PATH
2
- remote: ../../../questioning_authority
2
+ remote: /Users/awead/Projects/Github/projecthydra-labs/questioning_authority
3
3
  specs:
4
- qa (0.0.3)
4
+ qa (0.1.0)
5
5
  activerecord-import
6
6
  deprecation
7
7
  nokogiri (~> 1.6.0)
@@ -11,35 +11,33 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- actionmailer (4.0.3)
15
- actionpack (= 4.0.3)
14
+ actionmailer (4.0.5)
15
+ actionpack (= 4.0.5)
16
16
  mail (~> 2.5.4)
17
- actionpack (4.0.3)
18
- activesupport (= 4.0.3)
17
+ actionpack (4.0.5)
18
+ activesupport (= 4.0.5)
19
19
  builder (~> 3.1.0)
20
20
  erubis (~> 2.7.0)
21
21
  rack (~> 1.5.2)
22
22
  rack-test (~> 0.6.2)
23
- activemodel (4.0.3)
24
- activesupport (= 4.0.3)
23
+ activemodel (4.0.5)
24
+ activesupport (= 4.0.5)
25
25
  builder (~> 3.1.0)
26
- activerecord (4.0.3)
27
- activemodel (= 4.0.3)
26
+ activerecord (4.0.5)
27
+ activemodel (= 4.0.5)
28
28
  activerecord-deprecated_finders (~> 1.0.2)
29
- activesupport (= 4.0.3)
29
+ activesupport (= 4.0.5)
30
30
  arel (~> 4.0.0)
31
31
  activerecord-deprecated_finders (1.0.3)
32
- activerecord-import (0.4.1)
32
+ activerecord-import (0.5.0)
33
33
  activerecord (>= 3.0)
34
- activesupport (4.0.3)
35
- i18n (~> 0.6, >= 0.6.4)
34
+ activesupport (4.0.5)
35
+ i18n (~> 0.6, >= 0.6.9)
36
36
  minitest (~> 4.2)
37
37
  multi_json (~> 1.3)
38
38
  thread_safe (~> 0.1)
39
39
  tzinfo (~> 0.3.37)
40
- addressable (2.3.5)
41
40
  arel (4.0.2)
42
- atomic (1.1.15)
43
41
  builder (3.1.4)
44
42
  coffee-rails (4.0.1)
45
43
  coffee-script (>= 2.2.0)
@@ -48,13 +46,10 @@ GEM
48
46
  coffee-script-source
49
47
  execjs
50
48
  coffee-script-source (1.7.0)
51
- crack (0.4.2)
52
- safe_yaml (~> 1.0.0)
53
49
  deprecation (0.1.0)
54
50
  activesupport
55
- diff-lcs (1.2.5)
56
51
  erubis (2.7.0)
57
- execjs (2.0.2)
52
+ execjs (2.2.0)
58
53
  hike (1.2.3)
59
54
  i18n (0.6.9)
60
55
  jbuilder (1.5.3)
@@ -68,51 +63,39 @@ GEM
68
63
  mime-types (~> 1.16)
69
64
  treetop (~> 1.4.8)
70
65
  mime-types (1.25.1)
71
- mini_portile (0.5.2)
66
+ mini_portile (0.6.0)
72
67
  minitest (4.7.5)
73
- multi_json (1.8.4)
74
- nokogiri (1.6.1)
75
- mini_portile (~> 0.5.0)
76
- polyglot (0.3.4)
68
+ multi_json (1.10.1)
69
+ nokogiri (1.6.2.1)
70
+ mini_portile (= 0.6.0)
71
+ polyglot (0.3.5)
77
72
  rack (1.5.2)
78
73
  rack-test (0.6.2)
79
74
  rack (>= 1.0)
80
- rails (4.0.3)
81
- actionmailer (= 4.0.3)
82
- actionpack (= 4.0.3)
83
- activerecord (= 4.0.3)
84
- activesupport (= 4.0.3)
75
+ rails (4.0.5)
76
+ actionmailer (= 4.0.5)
77
+ actionpack (= 4.0.5)
78
+ activerecord (= 4.0.5)
79
+ activesupport (= 4.0.5)
85
80
  bundler (>= 1.3.0, < 2.0)
86
- railties (= 4.0.3)
81
+ railties (= 4.0.5)
87
82
  sprockets-rails (~> 2.0.0)
88
- railties (4.0.3)
89
- actionpack (= 4.0.3)
90
- activesupport (= 4.0.3)
83
+ railties (4.0.5)
84
+ actionpack (= 4.0.5)
85
+ activesupport (= 4.0.5)
91
86
  rake (>= 0.8.7)
92
87
  thor (>= 0.18.1, < 2.0)
93
- rake (10.1.1)
88
+ rake (10.3.2)
94
89
  rdoc (4.1.1)
95
90
  json (~> 1.4)
96
91
  rest-client (1.6.7)
97
92
  mime-types (>= 1.16)
98
- rspec-core (2.14.8)
99
- rspec-expectations (2.14.5)
100
- diff-lcs (>= 1.1.3, < 2.0)
101
- rspec-mocks (2.14.6)
102
- rspec-rails (2.14.1)
103
- actionpack (>= 3.0)
104
- activemodel (>= 3.0)
105
- activesupport (>= 3.0)
106
- railties (>= 3.0)
107
- rspec-core (~> 2.14.0)
108
- rspec-expectations (~> 2.14.0)
109
- rspec-mocks (~> 2.14.0)
110
- safe_yaml (1.0.1)
111
- sass (3.2.14)
112
- sass-rails (4.0.1)
93
+ sass (3.2.19)
94
+ sass-rails (4.0.3)
113
95
  railties (>= 4.0.0, < 5.0)
114
- sass (>= 3.1.10)
115
- sprockets-rails (~> 2.0.0)
96
+ sass (~> 3.2.0)
97
+ sprockets (~> 2.8, <= 2.11.0)
98
+ sprockets-rails (~> 2.0)
116
99
  sdoc (0.4.0)
117
100
  json (~> 1.8)
118
101
  rdoc (~> 4.0, < 5.0)
@@ -126,22 +109,18 @@ GEM
126
109
  activesupport (>= 3.0)
127
110
  sprockets (~> 2.8)
128
111
  sqlite3 (1.3.9)
129
- thor (0.18.1)
130
- thread_safe (0.2.0)
131
- atomic (>= 1.1.7, < 2)
112
+ thor (0.19.1)
113
+ thread_safe (0.3.4)
132
114
  tilt (1.4.1)
133
115
  treetop (1.4.15)
134
116
  polyglot
135
117
  polyglot (>= 0.3.1)
136
- turbolinks (2.2.1)
118
+ turbolinks (2.2.2)
137
119
  coffee-rails
138
- tzinfo (0.3.38)
139
- uglifier (2.4.0)
120
+ tzinfo (0.3.39)
121
+ uglifier (2.5.0)
140
122
  execjs (>= 0.3.0)
141
123
  json (>= 1.8.0)
142
- webmock (1.17.4)
143
- addressable (>= 2.2.7)
144
- crack (>= 0.3.2)
145
124
 
146
125
  PLATFORMS
147
126
  ruby
@@ -151,11 +130,9 @@ DEPENDENCIES
151
130
  jbuilder (~> 1.2)
152
131
  jquery-rails
153
132
  qa!
154
- rails (= 4.0.3)
155
- rspec-rails
156
- sass-rails (~> 4.0.0)
133
+ rails (= 4.0.5)
134
+ sass-rails (~> 4.0.2)
157
135
  sdoc
158
136
  sqlite3
159
137
  turbolinks
160
138
  uglifier (>= 1.3.0)
161
- webmock