qa 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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