aboutsummaryrefslogtreecommitdiff
path: root/virtual/modules/websites/tools/diaspora
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-14 18:05:03 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-19 01:36:32 +0100
commita7f7fdae99f7617fb7fdabe1e65423e02a4982b1 (patch)
tree213cad95926ccbeba95c7a1843c0882d9ccd5a71 /virtual/modules/websites/tools/diaspora
parent62a0946e8b3eda220943b9740becb3c969455549 (diff)
downloadNix-a7f7fdae99f7617fb7fdabe1e65423e02a4982b1.tar.gz
Nix-a7f7fdae99f7617fb7fdabe1e65423e02a4982b1.tar.zst
Nix-a7f7fdae99f7617fb7fdabe1e65423e02a4982b1.zip
Add diaspora services
Diffstat (limited to 'virtual/modules/websites/tools/diaspora')
-rw-r--r--virtual/modules/websites/tools/diaspora/Gemfile318
-rw-r--r--virtual/modules/websites/tools/diaspora/Gemfile.lock909
-rw-r--r--virtual/modules/websites/tools/diaspora/default.nix117
-rw-r--r--virtual/modules/websites/tools/diaspora/diaspora.json15
-rw-r--r--virtual/modules/websites/tools/diaspora/diaspora.nix173
-rw-r--r--virtual/modules/websites/tools/diaspora/gemset.nix3045
-rw-r--r--virtual/modules/websites/tools/diaspora/ldap.patch256
7 files changed, 4833 insertions, 0 deletions
diff --git a/virtual/modules/websites/tools/diaspora/Gemfile b/virtual/modules/websites/tools/diaspora/Gemfile
new file mode 100644
index 0000000..e279514
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/Gemfile
@@ -0,0 +1,318 @@
1# frozen_string_literal: true
2
3source "https://rubygems.org"
4
5gem "rails", "5.1.6"
6
7# Legacy Rails features, remove me!
8# responders (class level)
9gem "responders", "2.4.0"
10
11# Appserver
12
13gem "unicorn", "5.4.1", require: false
14gem "unicorn-worker-killer", "0.4.4"
15
16# Federation
17
18gem "diaspora_federation-json_schema", "0.2.5"
19gem "diaspora_federation-rails", "0.2.5"
20
21# API and JSON
22
23gem "acts_as_api", "1.0.1"
24gem "json", "2.1.0"
25gem "json-schema", "2.8.1"
26
27# Authentication
28
29gem "devise", "4.5.0"
30gem "devise_lastseenable", "0.0.6"
31
32# Captcha
33
34gem "simple_captcha2", "0.4.3", require: "simple_captcha"
35
36# Background processing
37
38gem "redis", "3.3.5" # Pinned to 3.3.x because of https://github.com/antirez/redis/issues/4272
39gem "sidekiq", "5.2.3"
40
41# Scheduled processing
42
43gem "sidekiq-cron", "1.0.4"
44
45# Compression
46
47gem "uglifier", "4.1.19"
48
49# Configuration
50
51gem "configurate", "0.3.1"
52
53# Cross-origin resource sharing
54
55gem "rack-cors", "1.0.2", require: "rack/cors"
56
57# CSS
58
59gem "autoprefixer-rails", "8.6.5"
60gem "bootstrap-sass", "3.3.7"
61gem "bootstrap-switch-rails", "3.3.4"
62gem "compass-rails", "3.1.0"
63gem "sass-rails", "5.0.7"
64gem "sprockets-rails", "3.2.1"
65
66# Database
67
68group :mysql, optional: true do
69 gem "mysql2", "0.5.2"
70end
71gem "pg", "1.1.3"
72
73
74gem "activerecord-import", "0.27.0"
75
76# File uploading
77
78gem "carrierwave", "1.2.3"
79gem "fog-aws", "3.3.0"
80gem "mini_magick", "4.9.2"
81
82# GUID generation
83gem "uuid", "2.3.9"
84
85# Icons
86
87gem "entypo-rails", "3.0.0"
88
89# JavaScript
90
91gem "handlebars_assets", "0.23.2"
92gem "jquery-rails", "4.3.3"
93gem "js-routes", "1.4.4"
94gem "js_image_paths", "0.1.1"
95
96source "https://rails-assets.org" do
97 gem "rails-assets-jquery", "3.3.1" # Should be kept in sync with jquery-rails
98 gem "rails-assets-jquery.ui", "1.11.4"
99
100 gem "rails-assets-highlightjs", "9.12.0"
101 gem "rails-assets-markdown-it", "8.4.2"
102 gem "rails-assets-markdown-it-hashtag", "0.4.0"
103 gem "rails-assets-markdown-it-diaspora-mention", "1.2.0"
104 gem "rails-assets-markdown-it-sanitizer", "0.4.3"
105 gem "rails-assets-markdown-it--markdown-it-for-inline", "0.1.1"
106 gem "rails-assets-markdown-it-sub", "1.0.0"
107 gem "rails-assets-markdown-it-sup", "1.0.0"
108
109 gem "rails-assets-backbone", "1.3.3"
110 gem "rails-assets-bootstrap-markdown", "2.10.0"
111 gem "rails-assets-corejs-typeahead", "1.2.1"
112 gem "rails-assets-fine-uploader", "5.13.0"
113
114 # jQuery plugins
115
116 gem "rails-assets-autosize", "4.0.2"
117 gem "rails-assets-blueimp-gallery", "2.33.0"
118 gem "rails-assets-jquery.are-you-sure", "1.9.0"
119 gem "rails-assets-jquery-placeholder", "2.3.1"
120 gem "rails-assets-jquery-textchange", "0.2.3"
121 gem "rails-assets-utatti-perfect-scrollbar", "1.4.0"
122end
123
124gem "markdown-it-html5-embed", "1.0.0"
125
126# Localization
127
128gem "http_accept_language", "2.1.1"
129gem "i18n-inflector-rails", "1.0.7"
130gem "rails-i18n", "5.1.2"
131
132# Mail
133
134gem "markerb", "1.1.0"
135
136# Map
137gem "leaflet-rails", "1.3.1"
138
139# Parsing
140
141gem "nokogiri", "1.8.5"
142gem "open_graph_reader", "0.6.2" # also update User-Agent in features/support/webmock.rb
143gem "redcarpet", "3.4.0"
144gem "ruby-oembed", "0.12.0"
145gem "twitter-text", "1.14.7"
146
147# RTL support
148
149gem "string-direction", "1.2.1"
150
151# Security Headers
152
153gem "secure_headers", "6.0.0"
154
155# Services
156
157gem "omniauth", "1.8.1"
158gem "omniauth-tumblr", "1.2"
159gem "omniauth-twitter", "1.4.0"
160gem "omniauth-wordpress", "0.2.2"
161gem "twitter", "6.2.0"
162
163# OpenID Connect
164gem "openid_connect", "1.1.6"
165
166# Serializers
167
168gem "active_model_serializers", "0.9.7"
169
170# XMPP chat dependencies
171gem "diaspora-prosody-config", "0.0.7"
172gem "rails-assets-diaspora_jsxc", "0.1.5.develop.7", source: "https://rails-assets.org"
173
174# Tags
175
176gem "acts-as-taggable-on", "6.0.0"
177
178# URIs and HTTP
179
180gem "addressable", "2.5.2", require: "addressable/uri"
181gem "faraday", "0.15.3"
182gem "faraday_middleware", "0.12.2"
183gem "faraday-cookie_jar", "0.0.6"
184gem "typhoeus", "1.3.1"
185
186# Views
187
188gem "gon", "6.2.1"
189gem "hamlit", "2.9.1"
190gem "mobile-fu", "1.4.0"
191gem "rails-timeago", "2.16.0"
192gem "will_paginate", "3.1.6"
193
194# Logging
195
196gem "logging-rails", "0.6.0", require: "logging/rails"
197
198# Reading and writing zip files
199
200gem "rubyzip", "1.2.2", require: "zip"
201
202# Prevent occasions where minitest is not bundled in
203# packaged versions of ruby. See following issues/prs:
204# https://github.com/gitlabhq/gitlabhq/issues/3826
205# https://github.com/gitlabhq/gitlabhq/pull/3852
206# https://github.com/discourse/discourse/pull/238
207gem "minitest"
208
209gem "versionist", "1.7.0"
210
211# Windows and OSX have an execjs compatible runtime built-in, Linux users should
212# install Node.js or use "therubyracer".
213#
214# See https://github.com/sstephenson/execjs#readme for more supported runtimes
215
216# gem "therubyracer", :platform => :ruby
217
218# LDAP
219gem 'net-ldap', '~> 0.16'
220
221group :production do # we don"t install these on travis to speed up test runs
222 # Analytics
223
224 gem "rack-google-analytics", "1.2.0"
225 gem "rack-piwik", "0.3.0", require: "rack/piwik"
226
227 # Process management
228
229 gem "eye", "0.10.0"
230
231 # Redirects
232
233 gem "rack-rewrite", "1.5.1", require: false
234 gem "rack-ssl", "1.4.1", require: "rack/ssl"
235
236 # Third party asset hosting
237
238 gem "asset_sync", "2.5.0", require: false
239end
240
241group :development do
242 # Automatic test runs
243 gem "guard", "2.15.0", require: false
244 gem "guard-rspec", "4.7.3", require: false
245 gem "guard-rubocop", "1.3.0", require: false
246 gem "rb-fsevent", "0.10.3", require: false
247 gem "rb-inotify", "0.9.10", require: false
248
249 # Linters
250 gem "haml_lint", "0.28.0", require: false
251 gem "pronto", "0.9.5", require: false
252 gem "pronto-eslint", "0.9.1", require: false
253 gem "pronto-haml", "0.9.0", require: false
254 gem "pronto-rubocop", "0.9.1", require: false
255 gem "pronto-scss", "0.9.1", require: false
256 gem "rubocop", "0.60.0", require: false
257
258 # Preloading environment
259
260 gem "spring", "2.0.2"
261 gem "spring-commands-rspec", "1.0.4"
262 gem "spring-commands-cucumber", "1.0.1"
263
264 # Debugging
265 gem "pry"
266 gem "pry-byebug"
267
268 # test coverage
269 gem "simplecov", "0.16.1", require: false
270
271 gem "turbo_dev_assets", "0.0.2"
272end
273
274group :test do
275 # RSpec (unit tests, some integration tests)
276
277 gem "fixture_builder", "0.5.2.rc3"
278 gem "fuubar", "2.3.2"
279 gem "json-schema-rspec", "0.0.4"
280 gem "rspec-json_expectations", "~> 2.1"
281
282 # Cucumber (integration tests)
283
284 gem "capybara", "3.11.1"
285 gem "database_cleaner", "1.7.0"
286 gem "poltergeist", "1.18.1"
287
288 gem "cucumber-api-steps", "0.14", require: false
289
290 # General helpers
291
292 gem "factory_girl_rails", "4.8.0"
293 gem "shoulda-matchers", "3.1.2"
294 gem "timecop", "0.9.1"
295 gem "webmock", "3.4.2", require: false
296
297 gem "diaspora_federation-test", "0.2.5"
298
299 # Coverage
300 gem "coveralls", "0.8.22", require: false
301end
302
303group :development, :test do
304 # RSpec (unit tests, some integration tests)
305 gem "rspec-rails", "3.8.1"
306
307 # Cucumber (integration tests)
308 gem "cucumber-rails", "1.6.0", require: false
309
310 # Jasmine (client side application tests (JS))
311 gem "jasmine", "3.3.0"
312 gem "jasmine-jquery-rails", "2.0.3"
313 gem "rails-assets-jasmine-ajax", "3.4.0", source: "https://rails-assets.org"
314 gem "sinon-rails", "1.15.0"
315
316 # For `assigns` in controller specs
317 gem "rails-controller-testing", "1.0.2"
318end
diff --git a/virtual/modules/websites/tools/diaspora/Gemfile.lock b/virtual/modules/websites/tools/diaspora/Gemfile.lock
new file mode 100644
index 0000000..ceb08c1
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/Gemfile.lock
@@ -0,0 +1,909 @@
1GEM
2 remote: https://rubygems.org/
3 remote: https://rails-assets.org/
4 specs:
5 actioncable (5.1.6)
6 actionpack (= 5.1.6)
7 nio4r (~> 2.0)
8 websocket-driver (~> 0.6.1)
9 actionmailer (5.1.6)
10 actionpack (= 5.1.6)
11 actionview (= 5.1.6)
12 activejob (= 5.1.6)
13 mail (~> 2.5, >= 2.5.4)
14 rails-dom-testing (~> 2.0)
15 actionpack (5.1.6)
16 actionview (= 5.1.6)
17 activesupport (= 5.1.6)
18 rack (~> 2.0)
19 rack-test (>= 0.6.3)
20 rails-dom-testing (~> 2.0)
21 rails-html-sanitizer (~> 1.0, >= 1.0.2)
22 actionview (5.1.6)
23 activesupport (= 5.1.6)
24 builder (~> 3.1)
25 erubi (~> 1.4)
26 rails-dom-testing (~> 2.0)
27 rails-html-sanitizer (~> 1.0, >= 1.0.3)
28 active_model_serializers (0.9.7)
29 activemodel (>= 3.2)
30 concurrent-ruby (~> 1.0)
31 activejob (5.1.6)
32 activesupport (= 5.1.6)
33 globalid (>= 0.3.6)
34 activemodel (5.1.6)
35 activesupport (= 5.1.6)
36 activerecord (5.1.6)
37 activemodel (= 5.1.6)
38 activesupport (= 5.1.6)
39 arel (~> 8.0)
40 activerecord-import (0.27.0)
41 activerecord (>= 3.2)
42 activesupport (5.1.6)
43 concurrent-ruby (~> 1.0, >= 1.0.2)
44 i18n (>= 0.7, < 2)
45 minitest (~> 5.1)
46 tzinfo (~> 1.1)
47 acts-as-taggable-on (6.0.0)
48 activerecord (~> 5.0)
49 acts_as_api (1.0.1)
50 activemodel (>= 3.0.0)
51 activesupport (>= 3.0.0)
52 rack (>= 1.1.0)
53 addressable (2.5.2)
54 public_suffix (>= 2.0.2, < 4.0)
55 aes_key_wrap (1.0.1)
56 arel (8.0.0)
57 asset_sync (2.5.0)
58 activemodel (>= 4.1.0)
59 fog-core
60 mime-types (>= 2.99)
61 unf
62 ast (2.4.0)
63 attr_required (1.0.1)
64 autoprefixer-rails (8.6.5)
65 execjs
66 backports (3.11.4)
67 bcrypt (3.1.12)
68 bindata (2.4.4)
69 bootstrap-sass (3.3.7)
70 autoprefixer-rails (>= 5.2.1)
71 sass (>= 3.3.4)
72 bootstrap-switch-rails (3.3.4)
73 buftok (0.2.0)
74 builder (3.2.3)
75 byebug (10.0.2)
76 capybara (3.11.1)
77 addressable
78 mini_mime (>= 0.1.3)
79 nokogiri (~> 1.8)
80 rack (>= 1.6.0)
81 rack-test (>= 0.6.3)
82 regexp_parser (~> 1.2)
83 xpath (~> 3.2)
84 carrierwave (1.2.3)
85 activemodel (>= 4.0.0)
86 activesupport (>= 4.0.0)
87 mime-types (>= 1.16)
88 celluloid (0.17.3)
89 celluloid-essentials
90 celluloid-extras
91 celluloid-fsm
92 celluloid-pool
93 celluloid-supervision
94 timers (>= 4.1.1)
95 celluloid-essentials (0.20.5)
96 timers (>= 4.1.1)
97 celluloid-extras (0.20.5)
98 timers (>= 4.1.1)
99 celluloid-fsm (0.20.5)
100 timers (>= 4.1.1)
101 celluloid-io (0.17.3)
102 celluloid (>= 0.17.2)
103 nio4r (>= 1.1)
104 timers (>= 4.1.1)
105 celluloid-pool (0.20.5)
106 timers (>= 4.1.1)
107 celluloid-supervision (0.20.6)
108 timers (>= 4.1.1)
109 chunky_png (1.3.10)
110 cliver (0.3.2)
111 coderay (1.1.2)
112 compass (1.0.3)
113 chunky_png (~> 1.2)
114 compass-core (~> 1.0.2)
115 compass-import-once (~> 1.0.5)
116 rb-fsevent (>= 0.9.3)
117 rb-inotify (>= 0.9)
118 sass (>= 3.3.13, < 3.5)
119 compass-core (1.0.3)
120 multi_json (~> 1.0)
121 sass (>= 3.3.0, < 3.5)
122 compass-import-once (1.0.5)
123 sass (>= 3.2, < 3.5)
124 compass-rails (3.1.0)
125 compass (~> 1.0.0)
126 sass-rails (< 5.1)
127 sprockets (< 4.0)
128 concurrent-ruby (1.1.3)
129 configurate (0.3.1)
130 connection_pool (2.2.2)
131 coveralls (0.8.22)
132 json (>= 1.8, < 3)
133 simplecov (~> 0.16.1)
134 term-ansicolor (~> 1.3)
135 thor (~> 0.19.4)
136 tins (~> 1.6)
137 crack (0.4.3)
138 safe_yaml (~> 1.0.0)
139 crass (1.0.4)
140 cucumber (3.1.2)
141 builder (>= 2.1.2)
142 cucumber-core (~> 3.2.0)
143 cucumber-expressions (~> 6.0.1)
144 cucumber-wire (~> 0.0.1)
145 diff-lcs (~> 1.3)
146 gherkin (~> 5.1.0)
147 multi_json (>= 1.7.5, < 2.0)
148 multi_test (>= 0.1.2)
149 cucumber-api-steps (0.14.0)
150 cucumber (>= 2.0.2)
151 jsonpath (>= 0.1.2)
152 cucumber-core (3.2.1)
153 backports (>= 3.8.0)
154 cucumber-tag_expressions (~> 1.1.0)
155 gherkin (~> 5.0)
156 cucumber-expressions (6.0.1)
157 cucumber-rails (1.6.0)
158 capybara (>= 1.1.2, < 4)
159 cucumber (>= 3.0.2, < 4)
160 mime-types (>= 1.17, < 4)
161 nokogiri (~> 1.8)
162 railties (>= 4, < 6)
163 cucumber-tag_expressions (1.1.1)
164 cucumber-wire (0.0.1)
165 database_cleaner (1.7.0)
166 devise (4.5.0)
167 bcrypt (~> 3.0)
168 orm_adapter (~> 0.1)
169 railties (>= 4.1.0, < 6.0)
170 responders
171 warden (~> 1.2.3)
172 devise_lastseenable (0.0.6)
173 devise
174 rails (>= 3.0.4)
175 diaspora-prosody-config (0.0.7)
176 diaspora_federation (0.2.5)
177 faraday (>= 0.9.0, < 0.16.0)
178 faraday_middleware (>= 0.10.0, < 0.13.0)
179 nokogiri (~> 1.6, >= 1.6.8)
180 typhoeus (~> 1.0)
181 valid (~> 1.0)
182 diaspora_federation-json_schema (0.2.5)
183 diaspora_federation-rails (0.2.5)
184 actionpack (>= 4.2, < 6)
185 diaspora_federation (= 0.2.5)
186 diaspora_federation-test (0.2.5)
187 diaspora_federation (= 0.2.5)
188 fabrication (~> 2.16)
189 uuid (~> 2.3, >= 2.3.8)
190 diff-lcs (1.3)
191 docile (1.3.1)
192 domain_name (0.5.20180417)
193 unf (>= 0.0.5, < 1.0.0)
194 entypo-rails (3.0.0)
195 railties (>= 4.1, < 6)
196 equalizer (0.0.11)
197 erubi (1.7.1)
198 eslintrb (2.1.0)
199 execjs
200 multi_json (>= 1.3)
201 rake
202 et-orbi (1.1.6)
203 tzinfo
204 ethon (0.11.0)
205 ffi (>= 1.3.0)
206 excon (0.62.0)
207 execjs (2.7.0)
208 eye (0.10.0)
209 celluloid (~> 0.17.3)
210 celluloid-io (~> 0.17.0)
211 kostya-sigar (~> 2.0.0)
212 state_machines
213 thor
214 fabrication (2.20.1)
215 factory_girl (4.8.0)
216 activesupport (>= 3.0.0)
217 factory_girl_rails (4.8.0)
218 factory_girl (~> 4.8.0)
219 railties (>= 3.0.0)
220 faraday (0.15.3)
221 multipart-post (>= 1.2, < 3)
222 faraday-cookie_jar (0.0.6)
223 faraday (>= 0.7.4)
224 http-cookie (~> 1.0.0)
225 faraday_middleware (0.12.2)
226 faraday (>= 0.7.4, < 1.0)
227 ffi (1.9.25)
228 fixture_builder (0.5.2.rc3)
229 activerecord (>= 2)
230 activesupport (>= 2)
231 hashdiff
232 fog-aws (3.3.0)
233 fog-core (~> 2.1)
234 fog-json (~> 1.1)
235 fog-xml (~> 0.1)
236 ipaddress (~> 0.8)
237 fog-core (2.1.2)
238 builder
239 excon (~> 0.58)
240 formatador (~> 0.2)
241 mime-types
242 fog-json (1.2.0)
243 fog-core
244 multi_json (~> 1.10)
245 fog-xml (0.1.3)
246 fog-core
247 nokogiri (>= 1.5.11, < 2.0.0)
248 formatador (0.2.5)
249 fugit (1.1.6)
250 et-orbi (~> 1.1, >= 1.1.6)
251 raabro (~> 1.1)
252 fuubar (2.3.2)
253 rspec-core (~> 3.0)
254 ruby-progressbar (~> 1.4)
255 get_process_mem (0.2.3)
256 gherkin (5.1.0)
257 gitlab (4.7.0)
258 httparty (>= 0.14.0)
259 terminal-table (>= 1.5.1)
260 globalid (0.4.1)
261 activesupport (>= 4.2.0)
262 gon (6.2.1)
263 actionpack (>= 3.0)
264 multi_json
265 request_store (>= 1.0)
266 guard (2.15.0)
267 formatador (>= 0.2.4)
268 listen (>= 2.7, < 4.0)
269 lumberjack (>= 1.0.12, < 2.0)
270 nenv (~> 0.1)
271 notiffany (~> 0.0)
272 pry (>= 0.9.12)
273 shellany (~> 0.0)
274 thor (>= 0.18.1)
275 guard-compat (1.2.1)
276 guard-rspec (4.7.3)
277 guard (~> 2.1)
278 guard-compat (~> 1.1)
279 rspec (>= 2.99.0, < 4.0)
280 guard-rubocop (1.3.0)
281 guard (~> 2.0)
282 rubocop (~> 0.20)
283 haml (5.0.4)
284 temple (>= 0.8.0)
285 tilt
286 haml_lint (0.28.0)
287 haml (>= 4.0, < 5.1)
288 rainbow
289 rake (>= 10, < 13)
290 rubocop (>= 0.50.0)
291 sysexits (~> 1.1)
292 hamlit (2.9.1)
293 temple (>= 0.8.0)
294 thor
295 tilt
296 handlebars_assets (0.23.2)
297 execjs (~> 2.0)
298 sprockets (>= 2.0.0)
299 tilt (>= 1.2)
300 hashdiff (0.3.7)
301 hashie (3.5.7)
302 http (3.3.0)
303 addressable (~> 2.3)
304 http-cookie (~> 1.0)
305 http-form_data (~> 2.0)
306 http_parser.rb (~> 0.6.0)
307 http-cookie (1.0.3)
308 domain_name (~> 0.5)
309 http-form_data (2.1.1)
310 http_accept_language (2.1.1)
311 http_parser.rb (0.6.0)
312 httparty (0.16.3)
313 mime-types (~> 3.0)
314 multi_xml (>= 0.5.2)
315 httpclient (2.8.3)
316 i18n (1.1.1)
317 concurrent-ruby (~> 1.0)
318 i18n-inflector (2.6.7)
319 i18n (>= 0.4.1)
320 i18n-inflector-rails (1.0.7)
321 actionpack (>= 3.0.0)
322 i18n-inflector (~> 2.6)
323 railties (>= 3.0.0)
324 ipaddress (0.8.3)
325 jaro_winkler (1.5.1)
326 jasmine (3.3.0)
327 jasmine-core (~> 3.3.0)
328 phantomjs
329 rack (>= 1.2.1)
330 rake
331 jasmine-core (3.3.0)
332 jasmine-jquery-rails (2.0.3)
333 jquery-rails (4.3.3)
334 rails-dom-testing (>= 1, < 3)
335 railties (>= 4.2.0)
336 thor (>= 0.14, < 2.0)
337 js-routes (1.4.4)
338 railties (>= 3.2)
339 sprockets-rails
340 js_image_paths (0.1.1)
341 rails (>= 4.0, < 6.0)
342 sprockets (>= 3.0.0)
343 json (2.1.0)
344 json-jwt (1.9.4)
345 activesupport
346 aes_key_wrap
347 bindata
348 json-schema (2.8.1)
349 addressable (>= 2.4)
350 json-schema-rspec (0.0.4)
351 json-schema (~> 2.5)
352 rspec
353 jsonpath (0.9.6)
354 multi_json
355 to_regexp (~> 0.2.1)
356 jwt (2.1.0)
357 kgio (2.11.2)
358 kostya-sigar (2.0.4)
359 leaflet-rails (1.3.1)
360 rails (>= 4.2.0)
361 listen (3.1.5)
362 rb-fsevent (~> 0.9, >= 0.9.4)
363 rb-inotify (~> 0.9, >= 0.9.7)
364 ruby_dep (~> 1.2)
365 little-plugger (1.1.4)
366 logging (2.2.2)
367 little-plugger (~> 1.1)
368 multi_json (~> 1.10)
369 logging-rails (0.6.0)
370 logging (>= 1.8)
371 loofah (2.2.3)
372 crass (~> 1.0.2)
373 nokogiri (>= 1.5.9)
374 lumberjack (1.0.13)
375 macaddr (1.7.1)
376 systemu (~> 2.6.2)
377 mail (2.7.1)
378 mini_mime (>= 0.1.1)
379 markdown-it-html5-embed (1.0.0)
380 markerb (1.1.0)
381 memoizable (0.4.2)
382 thread_safe (~> 0.3, >= 0.3.1)
383 method_source (0.9.2)
384 mime-types (3.2.2)
385 mime-types-data (~> 3.2015)
386 mime-types-data (3.2018.0812)
387 mini_magick (4.9.2)
388 mini_mime (1.0.1)
389 mini_portile2 (2.3.0)
390 minitest (5.11.3)
391 mobile-fu (1.4.0)
392 rack-mobile-detect
393 rails
394 multi_json (1.13.1)
395 multi_test (0.1.2)
396 multi_xml (0.6.0)
397 multipart-post (2.0.0)
398 mysql2 (0.5.2)
399 naught (1.1.0)
400 nenv (0.3.0)
401 net-ldap (0.16.1)
402 nio4r (2.3.1)
403 nokogiri (1.8.5)
404 mini_portile2 (~> 2.3.0)
405 notiffany (0.1.1)
406 nenv (~> 0.1)
407 shellany (~> 0.0)
408 oauth (0.5.4)
409 oauth2 (1.4.1)
410 faraday (>= 0.8, < 0.16.0)
411 jwt (>= 1.0, < 3.0)
412 multi_json (~> 1.3)
413 multi_xml (~> 0.5)
414 rack (>= 1.2, < 3)
415 octokit (4.13.0)
416 sawyer (~> 0.8.0, >= 0.5.3)
417 omniauth (1.8.1)
418 hashie (>= 3.4.6, < 3.6.0)
419 rack (>= 1.6.2, < 3)
420 omniauth-oauth (1.1.0)
421 oauth
422 omniauth (~> 1.0)
423 omniauth-oauth2 (1.5.0)
424 oauth2 (~> 1.1)
425 omniauth (~> 1.2)
426 omniauth-tumblr (1.2)
427 multi_json
428 omniauth-oauth (~> 1.0)
429 omniauth-twitter (1.4.0)
430 omniauth-oauth (~> 1.1)
431 rack
432 omniauth-wordpress (0.2.2)
433 omniauth-oauth2 (>= 1.1.0)
434 open_graph_reader (0.6.2)
435 faraday (>= 0.9.0)
436 nokogiri (~> 1.6)
437 openid_connect (1.1.6)
438 activemodel
439 attr_required (>= 1.0.0)
440 json-jwt (>= 1.5.0)
441 rack-oauth2 (>= 1.6.1)
442 swd (>= 1.0.0)
443 tzinfo
444 validate_email
445 validate_url
446 webfinger (>= 1.0.1)
447 orm_adapter (0.5.0)
448 parallel (1.12.1)
449 parser (2.5.3.0)
450 ast (~> 2.4.0)
451 pg (1.1.3)
452 phantomjs (2.1.1.0)
453 poltergeist (1.18.1)
454 capybara (>= 2.1, < 4)
455 cliver (~> 0.3.1)
456 websocket-driver (>= 0.2.0)
457 powerpack (0.1.2)
458 pronto (0.9.5)
459 gitlab (~> 4.0, >= 4.0.0)
460 httparty (>= 0.13.7)
461 octokit (~> 4.7, >= 4.7.0)
462 rainbow (~> 2.1)
463 rugged (~> 0.24, >= 0.23.0)
464 thor (~> 0.19.0)
465 pronto-eslint (0.9.1)
466 eslintrb (~> 2.0, >= 2.0.0)
467 pronto (~> 0.9.0)
468 pronto-haml (0.9.0)
469 haml_lint (~> 0.23)
470 pronto (~> 0.9.0)
471 pronto-rubocop (0.9.1)
472 pronto (~> 0.9.0)
473 rubocop (~> 0.50, >= 0.49.1)
474 pronto-scss (0.9.1)
475 pronto (~> 0.9.0)
476 scss_lint (~> 0.43, >= 0.43.0)
477 pry (0.12.2)
478 coderay (~> 1.1.0)
479 method_source (~> 0.9.0)
480 pry-byebug (3.6.0)
481 byebug (~> 10.0)
482 pry (~> 0.10)
483 public_suffix (3.0.3)
484 raabro (1.1.6)
485 rack (2.0.6)
486 rack-cors (1.0.2)
487 rack-google-analytics (1.2.0)
488 actionpack
489 activesupport
490 rack-mobile-detect (0.4.0)
491 rack
492 rack-oauth2 (1.9.3)
493 activesupport
494 attr_required
495 httpclient
496 json-jwt (>= 1.9.0)
497 rack
498 rack-piwik (0.3.0)
499 rack-protection (2.0.4)
500 rack
501 rack-rewrite (1.5.1)
502 rack-ssl (1.4.1)
503 rack
504 rack-test (1.1.0)
505 rack (>= 1.0, < 3)
506 rails (5.1.6)
507 actioncable (= 5.1.6)
508 actionmailer (= 5.1.6)
509 actionpack (= 5.1.6)
510 actionview (= 5.1.6)
511 activejob (= 5.1.6)
512 activemodel (= 5.1.6)
513 activerecord (= 5.1.6)
514 activesupport (= 5.1.6)
515 bundler (>= 1.3.0)
516 railties (= 5.1.6)
517 sprockets-rails (>= 2.0.0)
518 rails-assets-autosize (4.0.2)
519 rails-assets-backbone (1.3.3)
520 rails-assets-underscore (>= 1.8.3)
521 rails-assets-blueimp-gallery (2.33.0)
522 rails-assets-bootstrap (3.3.7)
523 rails-assets-jquery (>= 1.9.1, < 4)
524 rails-assets-bootstrap-markdown (2.10.0)
525 rails-assets-bootstrap (~> 3)
526 rails-assets-corejs-typeahead (1.2.1)
527 rails-assets-jquery (>= 1.11)
528 rails-assets-diaspora_jsxc (0.1.5.develop.7)
529 rails-assets-emojione (~> 2.0.1)
530 rails-assets-favico.js (>= 0.3.10, < 0.4)
531 rails-assets-jquery-colorbox (~> 1.6.3)
532 rails-assets-jquery-fullscreen-plugin (~> 0.5.0)
533 rails-assets-jquery.slimscroll (~> 1.3.6)
534 rails-assets-jquery.ui (~> 1.11.4)
535 rails-assets-emojione (2.0.1)
536 rails-assets-favico.js (0.3.10)
537 rails-assets-fine-uploader (5.13.0)
538 rails-assets-highlightjs (9.12.0)
539 rails-assets-jasmine (3.3.0)
540 rails-assets-jasmine-ajax (3.4.0)
541 rails-assets-jasmine (~> 3)
542 rails-assets-jquery (3.3.1)
543 rails-assets-jquery-colorbox (1.6.4)
544 rails-assets-jquery (>= 1.3.2)
545 rails-assets-jquery-fullscreen-plugin (0.5.0)
546 rails-assets-jquery-placeholder (2.3.1)
547 rails-assets-jquery (>= 1.6)
548 rails-assets-jquery-textchange (0.2.3)
549 rails-assets-jquery
550 rails-assets-jquery.are-you-sure (1.9.0)
551 rails-assets-jquery (>= 1.4.2)
552 rails-assets-jquery.slimscroll (1.3.8)
553 rails-assets-jquery.ui (1.11.4)
554 rails-assets-jquery (>= 1.6)
555 rails-assets-markdown-it--markdown-it-for-inline (0.1.1)
556 rails-assets-markdown-it (8.4.2)
557 rails-assets-markdown-it-diaspora-mention (1.2.0)
558 rails-assets-markdown-it-hashtag (0.4.0)
559 rails-assets-markdown-it-sanitizer (0.4.3)
560 rails-assets-markdown-it-sub (1.0.0)
561 rails-assets-markdown-it-sup (1.0.0)
562 rails-assets-underscore (1.9.1)
563 rails-assets-utatti-perfect-scrollbar (1.4.0)
564 rails-controller-testing (1.0.2)
565 actionpack (~> 5.x, >= 5.0.1)
566 actionview (~> 5.x, >= 5.0.1)
567 activesupport (~> 5.x)
568 rails-dom-testing (2.0.3)
569 activesupport (>= 4.2.0)
570 nokogiri (>= 1.6)
571 rails-html-sanitizer (1.0.4)
572 loofah (~> 2.2, >= 2.2.2)
573 rails-i18n (5.1.2)
574 i18n (>= 0.7, < 2)
575 railties (>= 5.0, < 6)
576 rails-timeago (2.16.0)
577 actionpack (>= 3.1)
578 activesupport (>= 3.1)
579 railties (5.1.6)
580 actionpack (= 5.1.6)
581 activesupport (= 5.1.6)
582 method_source
583 rake (>= 0.8.7)
584 thor (>= 0.18.1, < 2.0)
585 rainbow (2.2.2)
586 rake
587 raindrops (0.19.0)
588 rake (12.3.1)
589 rb-fsevent (0.10.3)
590 rb-inotify (0.9.10)
591 ffi (>= 0.5.0, < 2)
592 redcarpet (3.4.0)
593 redis (3.3.5)
594 regexp_parser (1.3.0)
595 request_store (1.4.1)
596 rack (>= 1.4)
597 responders (2.4.0)
598 actionpack (>= 4.2.0, < 5.3)
599 railties (>= 4.2.0, < 5.3)
600 rspec (3.8.0)
601 rspec-core (~> 3.8.0)
602 rspec-expectations (~> 3.8.0)
603 rspec-mocks (~> 3.8.0)
604 rspec-core (3.8.0)
605 rspec-support (~> 3.8.0)
606 rspec-expectations (3.8.2)
607 diff-lcs (>= 1.2.0, < 2.0)
608 rspec-support (~> 3.8.0)
609 rspec-json_expectations (2.1.0)
610 rspec-mocks (3.8.0)
611 diff-lcs (>= 1.2.0, < 2.0)
612 rspec-support (~> 3.8.0)
613 rspec-rails (3.8.1)
614 actionpack (>= 3.0)
615 activesupport (>= 3.0)
616 railties (>= 3.0)
617 rspec-core (~> 3.8.0)
618 rspec-expectations (~> 3.8.0)
619 rspec-mocks (~> 3.8.0)
620 rspec-support (~> 3.8.0)
621 rspec-support (3.8.0)
622 rubocop (0.60.0)
623 jaro_winkler (~> 1.5.1)
624 parallel (~> 1.10)
625 parser (>= 2.5, != 2.5.1.1)
626 powerpack (~> 0.1)
627 rainbow (>= 2.2.2, < 4.0)
628 ruby-progressbar (~> 1.7)
629 unicode-display_width (~> 1.4.0)
630 ruby-oembed (0.12.0)
631 ruby-progressbar (1.10.0)
632 ruby_dep (1.5.0)
633 rubyzip (1.2.2)
634 rugged (0.27.5)
635 safe_yaml (1.0.4)
636 sass (3.4.25)
637 sass-rails (5.0.7)
638 railties (>= 4.0.0, < 6)
639 sass (~> 3.1)
640 sprockets (>= 2.8, < 4.0)
641 sprockets-rails (>= 2.0, < 4.0)
642 tilt (>= 1.1, < 3)
643 sawyer (0.8.1)
644 addressable (>= 2.3.5, < 2.6)
645 faraday (~> 0.8, < 1.0)
646 scss_lint (0.55.0)
647 rake (>= 0.9, < 13)
648 sass (~> 3.4.20)
649 secure_headers (6.0.0)
650 shellany (0.0.1)
651 shoulda-matchers (3.1.2)
652 activesupport (>= 4.0.0)
653 sidekiq (5.2.3)
654 connection_pool (~> 2.2, >= 2.2.2)
655 rack-protection (>= 1.5.0)
656 redis (>= 3.3.5, < 5)
657 sidekiq-cron (1.0.4)
658 fugit (~> 1.1)
659 sidekiq (>= 4.2.1)
660 simple_captcha2 (0.4.3)
661 rails (>= 4.1)
662 simple_oauth (0.3.1)
663 simplecov (0.16.1)
664 docile (~> 1.1)
665 json (>= 1.8, < 3)
666 simplecov-html (~> 0.10.0)
667 simplecov-html (0.10.2)
668 sinon-rails (1.15.0)
669 railties (>= 3.1)
670 spring (2.0.2)
671 activesupport (>= 4.2)
672 spring-commands-cucumber (1.0.1)
673 spring (>= 0.9.1)
674 spring-commands-rspec (1.0.4)
675 spring (>= 0.9.1)
676 sprockets (3.7.2)
677 concurrent-ruby (~> 1.0)
678 rack (> 1, < 3)
679 sprockets-rails (3.2.1)
680 actionpack (>= 4.0)
681 activesupport (>= 4.0)
682 sprockets (>= 3.0.0)
683 state_machines (0.5.0)
684 string-direction (1.2.1)
685 swd (1.1.2)
686 activesupport (>= 3)
687 attr_required (>= 0.0.5)
688 httpclient (>= 2.4)
689 sysexits (1.2.0)
690 systemu (2.6.5)
691 temple (0.8.0)
692 term-ansicolor (1.7.0)
693 tins (~> 1.0)
694 terminal-table (1.8.0)
695 unicode-display_width (~> 1.1, >= 1.1.1)
696 thor (0.19.4)
697 thread_safe (0.3.6)
698 tilt (2.0.8)
699 timecop (0.9.1)
700 timers (4.2.0)
701 tins (1.20.2)
702 to_regexp (0.2.1)
703 turbo_dev_assets (0.0.2)
704 twitter (6.2.0)
705 addressable (~> 2.3)
706 buftok (~> 0.2.0)
707 equalizer (~> 0.0.11)
708 http (~> 3.0)
709 http-form_data (~> 2.0)
710 http_parser.rb (~> 0.6.0)
711 memoizable (~> 0.4.0)
712 multipart-post (~> 2.0)
713 naught (~> 1.0)
714 simple_oauth (~> 0.3.0)
715 twitter-text (1.14.7)
716 unf (~> 0.1.0)
717 typhoeus (1.3.1)
718 ethon (>= 0.9.0)
719 tzinfo (1.2.5)
720 thread_safe (~> 0.1)
721 uglifier (4.1.19)
722 execjs (>= 0.3.0, < 3)
723 unf (0.1.4)
724 unf_ext
725 unf_ext (0.0.7.5)
726 unicode-display_width (1.4.0)
727 unicorn (5.4.1)
728 kgio (~> 2.6)
729 raindrops (~> 0.7)
730 unicorn-worker-killer (0.4.4)
731 get_process_mem (~> 0)
732 unicorn (>= 4, < 6)
733 uuid (2.3.9)
734 macaddr (~> 1.0)
735 valid (1.2.0)
736 validate_email (0.1.6)
737 activemodel (>= 3.0)
738 mail (>= 2.2.5)
739 validate_url (1.0.2)
740 activemodel (>= 3.0.0)
741 addressable
742 versionist (1.7.0)
743 activesupport (>= 3)
744 railties (>= 3)
745 yard (~> 0.9.11)
746 warden (1.2.8)
747 rack (>= 2.0.6)
748 webfinger (1.1.0)
749 activesupport
750 httpclient (>= 2.4)
751 webmock (3.4.2)
752 addressable (>= 2.3.6)
753 crack (>= 0.3.2)
754 hashdiff
755 websocket-driver (0.6.5)
756 websocket-extensions (>= 0.1.0)
757 websocket-extensions (0.1.3)
758 will_paginate (3.1.6)
759 xpath (3.2.0)
760 nokogiri (~> 1.8)
761 yard (0.9.16)
762
763PLATFORMS
764 ruby
765
766DEPENDENCIES
767 active_model_serializers (= 0.9.7)
768 activerecord-import (= 0.27.0)
769 acts-as-taggable-on (= 6.0.0)
770 acts_as_api (= 1.0.1)
771 addressable (= 2.5.2)
772 asset_sync (= 2.5.0)
773 autoprefixer-rails (= 8.6.5)
774 bootstrap-sass (= 3.3.7)
775 bootstrap-switch-rails (= 3.3.4)
776 capybara (= 3.11.1)
777 carrierwave (= 1.2.3)
778 compass-rails (= 3.1.0)
779 configurate (= 0.3.1)
780 coveralls (= 0.8.22)
781 cucumber-api-steps (= 0.14)
782 cucumber-rails (= 1.6.0)
783 database_cleaner (= 1.7.0)
784 devise (= 4.5.0)
785 devise_lastseenable (= 0.0.6)
786 diaspora-prosody-config (= 0.0.7)
787 diaspora_federation-json_schema (= 0.2.5)
788 diaspora_federation-rails (= 0.2.5)
789 diaspora_federation-test (= 0.2.5)
790 entypo-rails (= 3.0.0)
791 eye (= 0.10.0)
792 factory_girl_rails (= 4.8.0)
793 faraday (= 0.15.3)
794 faraday-cookie_jar (= 0.0.6)
795 faraday_middleware (= 0.12.2)
796 fixture_builder (= 0.5.2.rc3)
797 fog-aws (= 3.3.0)
798 fuubar (= 2.3.2)
799 gon (= 6.2.1)
800 guard (= 2.15.0)
801 guard-rspec (= 4.7.3)
802 guard-rubocop (= 1.3.0)
803 haml_lint (= 0.28.0)
804 hamlit (= 2.9.1)
805 handlebars_assets (= 0.23.2)
806 http_accept_language (= 2.1.1)
807 i18n-inflector-rails (= 1.0.7)
808 jasmine (= 3.3.0)
809 jasmine-jquery-rails (= 2.0.3)
810 jquery-rails (= 4.3.3)
811 js-routes (= 1.4.4)
812 js_image_paths (= 0.1.1)
813 json (= 2.1.0)
814 json-schema (= 2.8.1)
815 json-schema-rspec (= 0.0.4)
816 leaflet-rails (= 1.3.1)
817 logging-rails (= 0.6.0)
818 markdown-it-html5-embed (= 1.0.0)
819 markerb (= 1.1.0)
820 mini_magick (= 4.9.2)
821 minitest
822 mobile-fu (= 1.4.0)
823 mysql2 (= 0.5.2)
824 net-ldap (~> 0.16)
825 nokogiri (= 1.8.5)
826 omniauth (= 1.8.1)
827 omniauth-tumblr (= 1.2)
828 omniauth-twitter (= 1.4.0)
829 omniauth-wordpress (= 0.2.2)
830 open_graph_reader (= 0.6.2)
831 openid_connect (= 1.1.6)
832 pg (= 1.1.3)
833 poltergeist (= 1.18.1)
834 pronto (= 0.9.5)
835 pronto-eslint (= 0.9.1)
836 pronto-haml (= 0.9.0)
837 pronto-rubocop (= 0.9.1)
838 pronto-scss (= 0.9.1)
839 pry
840 pry-byebug
841 rack-cors (= 1.0.2)
842 rack-google-analytics (= 1.2.0)
843 rack-piwik (= 0.3.0)
844 rack-rewrite (= 1.5.1)
845 rack-ssl (= 1.4.1)
846 rails (= 5.1.6)
847 rails-assets-autosize (= 4.0.2)!
848 rails-assets-backbone (= 1.3.3)!
849 rails-assets-blueimp-gallery (= 2.33.0)!
850 rails-assets-bootstrap-markdown (= 2.10.0)!
851 rails-assets-corejs-typeahead (= 1.2.1)!
852 rails-assets-diaspora_jsxc (= 0.1.5.develop.7)!
853 rails-assets-fine-uploader (= 5.13.0)!
854 rails-assets-highlightjs (= 9.12.0)!
855 rails-assets-jasmine-ajax (= 3.4.0)!
856 rails-assets-jquery (= 3.3.1)!
857 rails-assets-jquery-placeholder (= 2.3.1)!
858 rails-assets-jquery-textchange (= 0.2.3)!
859 rails-assets-jquery.are-you-sure (= 1.9.0)!
860 rails-assets-jquery.ui (= 1.11.4)!
861 rails-assets-markdown-it (= 8.4.2)!
862 rails-assets-markdown-it--markdown-it-for-inline (= 0.1.1)!
863 rails-assets-markdown-it-diaspora-mention (= 1.2.0)!
864 rails-assets-markdown-it-hashtag (= 0.4.0)!
865 rails-assets-markdown-it-sanitizer (= 0.4.3)!
866 rails-assets-markdown-it-sub (= 1.0.0)!
867 rails-assets-markdown-it-sup (= 1.0.0)!
868 rails-assets-utatti-perfect-scrollbar (= 1.4.0)!
869 rails-controller-testing (= 1.0.2)
870 rails-i18n (= 5.1.2)
871 rails-timeago (= 2.16.0)
872 rb-fsevent (= 0.10.3)
873 rb-inotify (= 0.9.10)
874 redcarpet (= 3.4.0)
875 redis (= 3.3.5)
876 responders (= 2.4.0)
877 rspec-json_expectations (~> 2.1)
878 rspec-rails (= 3.8.1)
879 rubocop (= 0.60.0)
880 ruby-oembed (= 0.12.0)
881 rubyzip (= 1.2.2)
882 sass-rails (= 5.0.7)
883 secure_headers (= 6.0.0)
884 shoulda-matchers (= 3.1.2)
885 sidekiq (= 5.2.3)
886 sidekiq-cron (= 1.0.4)
887 simple_captcha2 (= 0.4.3)
888 simplecov (= 0.16.1)
889 sinon-rails (= 1.15.0)
890 spring (= 2.0.2)
891 spring-commands-cucumber (= 1.0.1)
892 spring-commands-rspec (= 1.0.4)
893 sprockets-rails (= 3.2.1)
894 string-direction (= 1.2.1)
895 timecop (= 0.9.1)
896 turbo_dev_assets (= 0.0.2)
897 twitter (= 6.2.0)
898 twitter-text (= 1.14.7)
899 typhoeus (= 1.3.1)
900 uglifier (= 4.1.19)
901 unicorn (= 5.4.1)
902 unicorn-worker-killer (= 0.4.4)
903 uuid (= 2.3.9)
904 versionist (= 1.7.0)
905 webmock (= 3.4.2)
906 will_paginate (= 3.1.6)
907
908BUNDLED WITH
909 1.17.1
diff --git a/virtual/modules/websites/tools/diaspora/default.nix b/virtual/modules/websites/tools/diaspora/default.nix
new file mode 100644
index 0000000..23670dc
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/default.nix
@@ -0,0 +1,117 @@
1{ lib, pkgs, config, mylibs, ... }:
2let
3 diaspora = pkgs.callPackage ./diaspora.nix {
4 inherit (mylibs) fetchedGithub checkEnv;
5 };
6
7 cfg = config.services.myWebsites.tools.diaspora;
8in {
9 options.services.myWebsites.tools.diaspora = {
10 enable = lib.mkEnableOption "enable diaspora's website";
11 };
12
13 config = lib.mkIf cfg.enable {
14 # FIXME: Can we use dynamic users from systemd?
15 # nixos/modules/misc/ids.nix
16 ids.uids.diaspora = 398;
17 ids.gids.diaspora = 398;
18
19 users.users.diaspora = {
20 name = "diaspora";
21 uid = config.ids.uids.diaspora;
22 group = "diaspora";
23 description = "Diaspora user";
24 home = diaspora.railsRoot;
25 useDefaultShell = true;
26 packages = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby ];
27 };
28
29 users.groups.diaspora.gid = config.ids.gids.diaspora;
30
31 systemd.services.diaspora = {
32 description = "Diaspora";
33 wantedBy = [ "multi-user.target" ];
34 after = [ "network.target" "redis.service" "postgresql.service" ];
35 wants = [ "redis.service" "postgresql.service" ];
36
37 environment.RAILS_ENV = "production";
38 environment.BUNDLE_PATH = "${diaspora.gems}/lib/ruby/gems/2.4.0";
39 environment.BUNDLE_GEMFILE = "${diaspora.gems.confFiles}/Gemfile";
40 environment.EYE_SOCK = "${diaspora.socketsDir}/eye.sock";
41 environment.EYE_PID = "${diaspora.socketsDir}/eye.pid";
42
43 path = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
44
45 preStart = ''
46 ./bin/bundle exec rails db:migrate
47 '';
48
49 script = ''
50 exec ${diaspora.railsRoot}/script/server
51 '';
52
53 serviceConfig = {
54 User = "diaspora";
55 PrivateTmp = true;
56 Restart = "always";
57 Type = "simple";
58 WorkingDirectory = diaspora.railsRoot;
59 StandardInput = "null";
60 KillMode = "control-group";
61 };
62
63 unitConfig.RequiresMountsFor = diaspora.varDir;
64 };
65
66 # FIXME: initial sync
67 # FIXME: touch ${diaspora.varDir}/schedule.yml
68 system.activationScripts.diaspora = {
69 deps = [ "users" ];
70 text = ''
71 install -m 0755 -o diaspora -g diaspora -d ${diaspora.socketsDir}
72 install -m 0755 -o diaspora -g diaspora -d ${diaspora.varDir} \
73 ${diaspora.varDir}/uploads ${diaspora.varDir}/tmp \
74 ${diaspora.varDir}/log
75 install -m 0700 -o diaspora -g diaspora -d ${diaspora.varDir}/tmp/pids
76 if [ ! -f ${diaspora.varDir}/schedule.yml ]; then
77 echo "{}" | $wrapperDir/sudo -u diaspora tee ${diaspora.varDir}/schedule.yml
78 fi
79 '';
80 };
81
82 services.myWebsites.tools.modules = [
83 "headers" "proxy" "proxy_http" "proxy_balancer"
84 # FIXME: probably only one balancer method is needed:
85 "lbmethod_byrequests" "lbmethod_bytraffic" "lbmethod_bybusyness" "lbmethod_heartbeat"
86 ];
87 security.acme.certs."eldiron".extraDomains."diaspora.immae.eu" = null;
88 services.myWebsites.tools.vhostConfs.diaspora = {
89 certName = "eldiron";
90 hosts = [ "diaspora.immae.eu" ];
91 root = "${diaspora.railsRoot}/public/";
92 extraConfig = [ ''
93 RewriteEngine On
94 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
95 RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L]
96
97 <Proxy balancer://thinservers>
98 BalancerMember unix://${diaspora.railsSocket}|http://
99 </Proxy>
100
101 ProxyRequests Off
102 ProxyVia On
103 ProxyPreserveHost On
104 RequestHeader set X_FORWARDED_PROTO https
105
106 <Proxy *>
107 Require all granted
108 </Proxy>
109
110 <Directory ${diaspora.railsRoot}/public>
111 Require all granted
112 Options -MultiViews
113 </Directory>
114 '' ];
115 };
116 };
117}
diff --git a/virtual/modules/websites/tools/diaspora/diaspora.json b/virtual/modules/websites/tools/diaspora/diaspora.json
new file mode 100644
index 0000000..d5891c1
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/diaspora.json
@@ -0,0 +1,15 @@
1{
2 "tag": "v0.7.8.0",
3 "meta": {
4 "name": "diaspora",
5 "url": "https://github.com/diaspora/diaspora",
6 "branch": "refs/tags/v0.7.8.0"
7 },
8 "github": {
9 "owner": "diaspora",
10 "repo": "diaspora",
11 "rev": "e1b66f3c7cb72bd2cc9cf51475b31b005a547556",
12 "sha256": "1cgyb878zhdnkh7qa9qj8lwaf0jlb1prg1qnqasf7j5kgh9wn0nn",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/diaspora/diaspora.nix b/virtual/modules/websites/tools/diaspora/diaspora.nix
new file mode 100644
index 0000000..7880ac5
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/diaspora.nix
@@ -0,0 +1,173 @@
1{ checkEnv, fetchedGithub, stdenv, defaultGemConfig, writeText, bundlerEnv, ruby_2_4, pkgs, cacert }:
2let
3 gems = bundlerEnv {
4 name = "diaspora-env";
5 ruby = ruby_2_4;
6 gemdir = ./.;
7 # FIXME: it fails if I don’t include all groups
8 #groups = [ "default" "postgresql" "production" "development" "test" ];
9 # Had to remove them from gemset.nix, and remove mysql2
10 # Also had to "ungroup" pg in Gemfile
11 gemConfig = defaultGemConfig // {
12 kostya-sigar = attrs: {
13 buildInputs = with pkgs; [ pkgs.perl ];
14 };
15 };
16 };
17 varDir = "/var/lib/diaspora_immae";
18 socketsDir = "/run/diaspora";
19 buildInputs = [ gems ] ++ (with pkgs; [
20 git redis imagemagick libxslt nodejs
21 jemalloc cacert ruby_2_4
22 openssl postgresql curl libnghttp2
23 pkgconfig which
24 ]);
25 diaspora = stdenv.mkDerivation (fetchedGithub ./diaspora.json // rec {
26 buildPhase = ''
27 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
28 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
29
30 patch -p1 < ${./ldap.patch}
31 '';
32 installPhase = ''
33 cp -a . $out
34 '';
35 propagatedBuildInputs = buildInputs;
36 });
37 secret_token = assert checkEnv "NIXOPS_DIASPORA_SECRET_TOKEN";
38 writeText "secret_token.rb" ''
39 Diaspora::Application.config.secret_key_base = '${builtins.getEnv "NIXOPS_DIASPORA_SECRET_TOKEN"}'
40 '';
41 config =
42 assert checkEnv "NIXOPS_DIASPORA_LDAP_PASSWORD";
43 writeText "diaspora.yml" ''
44 configuration:
45 environment:
46 url: "https://diaspora.immae.eu/"
47 certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
48 redis: 'redis://localhost:6379/15'
49 sidekiq:
50 s3:
51 assets:
52 logging:
53 logrotate:
54 debug:
55 server:
56 listen: '${socketsDir}/diaspora.sock'
57 rails_environment: 'production'
58 chat:
59 server:
60 bosh:
61 log:
62 map:
63 mapbox:
64 privacy:
65 piwik:
66 statistics:
67 camo:
68 settings:
69 enable_registrations: false
70 welcome_message:
71 invitations:
72 open: false
73 paypal_donations:
74 community_spotlight:
75 captcha:
76 enable: false
77 terms:
78 maintenance:
79 remove_old_users:
80 default_metas:
81 csp:
82 services:
83 twitter:
84 tumblr:
85 wordpress:
86 mail:
87 enable: true
88 sender_address: 'diaspora@immae.eu'
89 method: 'smtp'
90 smtp:
91 host: 'mail.immae.eu'
92 sendmail:
93 admins:
94 account: "ismael"
95 podmin_email: 'diaspora@immae.eu'
96 relay:
97 outbound:
98 inbound:
99 ldap:
100 enable: true
101 host: ldap.immae.eu
102 port: 636
103 only_ldap: true
104 mail_attribute: mail
105 skip_email_confirmation: true
106 use_bind_dn: true
107 bind_dn: "cn=diaspora,ou=services,dc=immae,dc=eu"
108 bind_pw: "${builtins.getEnv "NIXOPS_DIASPORA_LDAP_PASSWORD"}"
109 search_base: "dc=immae,dc=eu"
110 search_filter: "(&(memberOf=cn=users,cn=diaspora,ou=services,dc=immae,dc=eu)(uid=%{username}))"
111 production:
112 environment:
113 development:
114 environment:
115 '';
116 database_config =
117 assert checkEnv "NIXOPS_DIASPORA_SQL_PASSWORD";
118 writeText "database.yml" ''
119 postgresql: &postgresql
120 adapter: postgresql
121 host: db-1.immae.eu
122 port: 5432
123 username: "diaspora"
124 password: "${builtins.getEnv "NIXOPS_DIASPORA_SQL_PASSWORD"}"
125 encoding: unicode
126 common: &common
127 <<: *postgresql
128 combined: &combined
129 <<: *common
130 development:
131 <<: *combined
132 database: diaspora_development
133 production:
134 <<: *combined
135 database: diaspora
136 test:
137 <<: *combined
138 database: "diaspora_test"
139 integration1:
140 <<: *combined
141 database: diaspora_integration1
142 integration2:
143 <<: *combined
144 database: diaspora_integration2
145 '';
146
147 railsRoot = stdenv.mkDerivation {
148 name = "diaspora_immae";
149 inherit diaspora;
150 builder = writeText "build_diaspora_immae" ''
151 source $stdenv/setup
152 cp -a $diaspora $out
153 cd $out
154 chmod -R u+rwX .
155 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
156 ln -s ${database_config} config/database.yml
157 ln -s ${config} config/diaspora.yml
158 ln -s ${secret_token} config/initializers/secret_token.rb
159 ln -sf ../../../../../../${varDir}/schedule.yml config/schedule.yml
160 ln -sf ../../../../../../${varDir}/oidc_key.pem config/oidc_key.pem
161 ln -sf ../../../../../../${varDir}/uploads public/uploads
162 RAILS_ENV=production ${gems}/bin/rake assets:precompile
163 rm -rf tmp log
164 ln -sf ../../../../../${varDir}/tmp tmp
165 ln -sf ../../../../../${varDir}/log log
166 '';
167 propagatedBuildInputs = buildInputs;
168 };
169in
170 {
171 inherit railsRoot varDir socketsDir gems;
172 railsSocket = "${socketsDir}/diaspora.sock";
173 }
diff --git a/virtual/modules/websites/tools/diaspora/gemset.nix b/virtual/modules/websites/tools/diaspora/gemset.nix
new file mode 100644
index 0000000..66482f0
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/gemset.nix
@@ -0,0 +1,3045 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 platforms = [];
5 source = {
6 remotes = ["https://rubygems.org"];
7 sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
8 type = "gem";
9 };
10 version = "5.1.6";
11 };
12 actionmailer = {
13 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
14 platforms = [];
15 source = {
16 remotes = ["https://rubygems.org"];
17 sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
18 type = "gem";
19 };
20 version = "5.1.6";
21 };
22 actionpack = {
23 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
24 platforms = [];
25 source = {
26 remotes = ["https://rubygems.org"];
27 sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
28 type = "gem";
29 };
30 version = "5.1.6";
31 };
32 actionview = {
33 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
34 platforms = [];
35 source = {
36 remotes = ["https://rubygems.org"];
37 sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
38 type = "gem";
39 };
40 version = "5.1.6";
41 };
42 active_model_serializers = {
43 dependencies = ["activemodel" "concurrent-ruby"];
44 platforms = [];
45 source = {
46 remotes = ["https://rubygems.org"];
47 sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
48 type = "gem";
49 };
50 version = "0.9.7";
51 };
52 activejob = {
53 dependencies = ["activesupport" "globalid"];
54 platforms = [];
55 source = {
56 remotes = ["https://rubygems.org"];
57 sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
58 type = "gem";
59 };
60 version = "5.1.6";
61 };
62 activemodel = {
63 dependencies = ["activesupport"];
64 platforms = [];
65 source = {
66 remotes = ["https://rubygems.org"];
67 sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
68 type = "gem";
69 };
70 version = "5.1.6";
71 };
72 activerecord = {
73 dependencies = ["activemodel" "activesupport" "arel"];
74 platforms = [];
75 source = {
76 remotes = ["https://rubygems.org"];
77 sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
78 type = "gem";
79 };
80 version = "5.1.6";
81 };
82 activerecord-import = {
83 dependencies = ["activerecord"];
84 platforms = [];
85 source = {
86 remotes = ["https://rubygems.org"];
87 sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
88 type = "gem";
89 };
90 version = "0.27.0";
91 };
92 activesupport = {
93 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
94 platforms = [];
95 source = {
96 remotes = ["https://rubygems.org"];
97 sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
98 type = "gem";
99 };
100 version = "5.1.6";
101 };
102 acts-as-taggable-on = {
103 dependencies = ["activerecord"];
104 platforms = [];
105 source = {
106 remotes = ["https://rubygems.org"];
107 sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
108 type = "gem";
109 };
110 version = "6.0.0";
111 };
112 acts_as_api = {
113 dependencies = ["activemodel" "activesupport" "rack"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
118 type = "gem";
119 };
120 version = "1.0.1";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 platforms = [];
125 source = {
126 remotes = ["https://rubygems.org"];
127 sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
128 type = "gem";
129 };
130 version = "2.5.2";
131 };
132 aes_key_wrap = {
133 platforms = [];
134 source = {
135 remotes = ["https://rubygems.org"];
136 sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
137 type = "gem";
138 };
139 version = "1.0.1";
140 };
141 arel = {
142 platforms = [];
143 source = {
144 remotes = ["https://rubygems.org"];
145 sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
146 type = "gem";
147 };
148 version = "8.0.0";
149 };
150 asset_sync = {
151 dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
152 platforms = [];
153 source = {
154 remotes = ["https://rubygems.org"];
155 sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
156 type = "gem";
157 };
158 version = "2.5.0";
159 };
160 ast = {
161 platforms = [];
162 source = {
163 remotes = ["https://rubygems.org"];
164 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
165 type = "gem";
166 };
167 version = "2.4.0";
168 };
169 attr_required = {
170 platforms = [];
171 source = {
172 remotes = ["https://rubygems.org"];
173 sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
174 type = "gem";
175 };
176 version = "1.0.1";
177 };
178 autoprefixer-rails = {
179 dependencies = ["execjs"];
180 platforms = [];
181 source = {
182 remotes = ["https://rubygems.org"];
183 sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
184 type = "gem";
185 };
186 version = "8.6.5";
187 };
188 backports = {
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
193 type = "gem";
194 };
195 version = "3.11.4";
196 };
197 bcrypt = {
198 platforms = [];
199 source = {
200 remotes = ["https://rubygems.org"];
201 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
202 type = "gem";
203 };
204 version = "3.1.12";
205 };
206 bindata = {
207 platforms = [];
208 source = {
209 remotes = ["https://rubygems.org"];
210 sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
211 type = "gem";
212 };
213 version = "2.4.4";
214 };
215 bootstrap-sass = {
216 dependencies = ["autoprefixer-rails" "sass"];
217 platforms = [];
218 source = {
219 remotes = ["https://rubygems.org"];
220 sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
221 type = "gem";
222 };
223 version = "3.3.7";
224 };
225 bootstrap-switch-rails = {
226 platforms = [];
227 source = {
228 remotes = ["https://rubygems.org"];
229 sha256 = "0qdk7xx0zlv4l49s2mwg4jd8a5ms3cy43n9l3217bknagcjyjfjx";
230 type = "gem";
231 };
232 version = "3.3.4";
233 };
234 buftok = {
235 platforms = [];
236 source = {
237 remotes = ["https://rubygems.org"];
238 sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
239 type = "gem";
240 };
241 version = "0.2.0";
242 };
243 builder = {
244 platforms = [];
245 source = {
246 remotes = ["https://rubygems.org"];
247 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
248 type = "gem";
249 };
250 version = "3.2.3";
251 };
252 byebug = {
253 platforms = [];
254 source = {
255 remotes = ["https://rubygems.org"];
256 sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
257 type = "gem";
258 };
259 version = "10.0.2";
260 };
261 capybara = {
262 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
263 platforms = [];
264 source = {
265 remotes = ["https://rubygems.org"];
266 sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
267 type = "gem";
268 };
269 version = "3.11.1";
270 };
271 carrierwave = {
272 dependencies = ["activemodel" "activesupport" "mime-types"];
273 platforms = [];
274 source = {
275 remotes = ["https://rubygems.org"];
276 sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
277 type = "gem";
278 };
279 version = "1.2.3";
280 };
281 celluloid = {
282 dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
283 platforms = [];
284 source = {
285 remotes = ["https://rubygems.org"];
286 sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
287 type = "gem";
288 };
289 version = "0.17.3";
290 };
291 celluloid-essentials = {
292 dependencies = ["timers"];
293 platforms = [];
294 source = {
295 remotes = ["https://rubygems.org"];
296 sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
297 type = "gem";
298 };
299 version = "0.20.5";
300 };
301 celluloid-extras = {
302 dependencies = ["timers"];
303 platforms = [];
304 source = {
305 remotes = ["https://rubygems.org"];
306 sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
307 type = "gem";
308 };
309 version = "0.20.5";
310 };
311 celluloid-fsm = {
312 dependencies = ["timers"];
313 platforms = [];
314 source = {
315 remotes = ["https://rubygems.org"];
316 sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
317 type = "gem";
318 };
319 version = "0.20.5";
320 };
321 celluloid-io = {
322 dependencies = ["celluloid" "nio4r" "timers"];
323 platforms = [];
324 source = {
325 remotes = ["https://rubygems.org"];
326 sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
327 type = "gem";
328 };
329 version = "0.17.3";
330 };
331 celluloid-pool = {
332 dependencies = ["timers"];
333 platforms = [];
334 source = {
335 remotes = ["https://rubygems.org"];
336 sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
337 type = "gem";
338 };
339 version = "0.20.5";
340 };
341 celluloid-supervision = {
342 dependencies = ["timers"];
343 platforms = [];
344 source = {
345 remotes = ["https://rubygems.org"];
346 sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
347 type = "gem";
348 };
349 version = "0.20.6";
350 };
351 chunky_png = {
352 platforms = [];
353 source = {
354 remotes = ["https://rubygems.org"];
355 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
356 type = "gem";
357 };
358 version = "1.3.10";
359 };
360 cliver = {
361 platforms = [];
362 source = {
363 remotes = ["https://rubygems.org"];
364 sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
365 type = "gem";
366 };
367 version = "0.3.2";
368 };
369 coderay = {
370 platforms = [];
371 source = {
372 remotes = ["https://rubygems.org"];
373 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
374 type = "gem";
375 };
376 version = "1.1.2";
377 };
378 compass = {
379 dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
380 platforms = [];
381 source = {
382 remotes = ["https://rubygems.org"];
383 sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
384 type = "gem";
385 };
386 version = "1.0.3";
387 };
388 compass-core = {
389 dependencies = ["multi_json" "sass"];
390 platforms = [];
391 source = {
392 remotes = ["https://rubygems.org"];
393 sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
394 type = "gem";
395 };
396 version = "1.0.3";
397 };
398 compass-import-once = {
399 dependencies = ["sass"];
400 platforms = [];
401 source = {
402 remotes = ["https://rubygems.org"];
403 sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
404 type = "gem";
405 };
406 version = "1.0.5";
407 };
408 compass-rails = {
409 dependencies = ["compass" "sass-rails" "sprockets"];
410 platforms = [];
411 source = {
412 remotes = ["https://rubygems.org"];
413 sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
414 type = "gem";
415 };
416 version = "3.1.0";
417 };
418 concurrent-ruby = {
419 platforms = [];
420 source = {
421 remotes = ["https://rubygems.org"];
422 sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
423 type = "gem";
424 };
425 version = "1.1.3";
426 };
427 configurate = {
428 platforms = [];
429 source = {
430 remotes = ["https://rubygems.org"];
431 sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
432 type = "gem";
433 };
434 version = "0.3.1";
435 };
436 connection_pool = {
437 platforms = [];
438 source = {
439 remotes = ["https://rubygems.org"];
440 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
441 type = "gem";
442 };
443 version = "2.2.2";
444 };
445 coveralls = {
446 dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
447 platforms = [];
448 source = {
449 remotes = ["https://rubygems.org"];
450 sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
451 type = "gem";
452 };
453 version = "0.8.22";
454 };
455 crack = {
456 dependencies = ["safe_yaml"];
457 platforms = [];
458 source = {
459 remotes = ["https://rubygems.org"];
460 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
461 type = "gem";
462 };
463 version = "0.4.3";
464 };
465 crass = {
466 platforms = [];
467 source = {
468 remotes = ["https://rubygems.org"];
469 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
470 type = "gem";
471 };
472 version = "1.0.4";
473 };
474 cucumber = {
475 dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
476 platforms = [];
477 source = {
478 remotes = ["https://rubygems.org"];
479 sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
480 type = "gem";
481 };
482 version = "3.1.2";
483 };
484 cucumber-api-steps = {
485 dependencies = ["cucumber" "jsonpath"];
486 platforms = [];
487 source = {
488 remotes = ["https://rubygems.org"];
489 sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
490 type = "gem";
491 };
492 version = "0.14.0";
493 };
494 cucumber-core = {
495 dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
496 platforms = [];
497 source = {
498 remotes = ["https://rubygems.org"];
499 sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
500 type = "gem";
501 };
502 version = "3.2.1";
503 };
504 cucumber-expressions = {
505 platforms = [];
506 source = {
507 remotes = ["https://rubygems.org"];
508 sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
509 type = "gem";
510 };
511 version = "6.0.1";
512 };
513 cucumber-rails = {
514 dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
515 platforms = [];
516 source = {
517 remotes = ["https://rubygems.org"];
518 sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
519 type = "gem";
520 };
521 version = "1.6.0";
522 };
523 cucumber-tag_expressions = {
524 platforms = [];
525 source = {
526 remotes = ["https://rubygems.org"];
527 sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
528 type = "gem";
529 };
530 version = "1.1.1";
531 };
532 cucumber-wire = {
533 platforms = [];
534 source = {
535 remotes = ["https://rubygems.org"];
536 sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
537 type = "gem";
538 };
539 version = "0.0.1";
540 };
541 database_cleaner = {
542 platforms = [];
543 source = {
544 remotes = ["https://rubygems.org"];
545 sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
546 type = "gem";
547 };
548 version = "1.7.0";
549 };
550 devise = {
551 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
552 platforms = [];
553 source = {
554 remotes = ["https://rubygems.org"];
555 sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
556 type = "gem";
557 };
558 version = "4.5.0";
559 };
560 devise_lastseenable = {
561 dependencies = ["devise" "rails"];
562 platforms = [];
563 source = {
564 remotes = ["https://rubygems.org"];
565 sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
566 type = "gem";
567 };
568 version = "0.0.6";
569 };
570 diaspora-prosody-config = {
571 platforms = [];
572 source = {
573 remotes = ["https://rubygems.org"];
574 sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
575 type = "gem";
576 };
577 version = "0.0.7";
578 };
579 diaspora_federation = {
580 dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
581 platforms = [];
582 source = {
583 remotes = ["https://rubygems.org"];
584 sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
585 type = "gem";
586 };
587 version = "0.2.5";
588 };
589 diaspora_federation-json_schema = {
590 platforms = [];
591 source = {
592 remotes = ["https://rubygems.org"];
593 sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
594 type = "gem";
595 };
596 version = "0.2.5";
597 };
598 diaspora_federation-rails = {
599 dependencies = ["actionpack" "diaspora_federation"];
600 platforms = [];
601 source = {
602 remotes = ["https://rubygems.org"];
603 sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
604 type = "gem";
605 };
606 version = "0.2.5";
607 };
608 diaspora_federation-test = {
609 dependencies = ["diaspora_federation" "fabrication" "uuid"];
610 platforms = [];
611 source = {
612 remotes = ["https://rubygems.org"];
613 sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
614 type = "gem";
615 };
616 version = "0.2.5";
617 };
618 diff-lcs = {
619 platforms = [];
620 source = {
621 remotes = ["https://rubygems.org"];
622 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
623 type = "gem";
624 };
625 version = "1.3";
626 };
627 docile = {
628 platforms = [];
629 source = {
630 remotes = ["https://rubygems.org"];
631 sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
632 type = "gem";
633 };
634 version = "1.3.1";
635 };
636 domain_name = {
637 dependencies = ["unf"];
638 platforms = [];
639 source = {
640 remotes = ["https://rubygems.org"];
641 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
642 type = "gem";
643 };
644 version = "0.5.20180417";
645 };
646 entypo-rails = {
647 dependencies = ["railties"];
648 platforms = [];
649 source = {
650 remotes = ["https://rubygems.org"];
651 sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
652 type = "gem";
653 };
654 version = "3.0.0";
655 };
656 equalizer = {
657 platforms = [];
658 source = {
659 remotes = ["https://rubygems.org"];
660 sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
661 type = "gem";
662 };
663 version = "0.0.11";
664 };
665 erubi = {
666 platforms = [];
667 source = {
668 remotes = ["https://rubygems.org"];
669 sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
670 type = "gem";
671 };
672 version = "1.7.1";
673 };
674 eslintrb = {
675 dependencies = ["execjs" "multi_json" "rake"];
676 platforms = [];
677 source = {
678 remotes = ["https://rubygems.org"];
679 sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
680 type = "gem";
681 };
682 version = "2.1.0";
683 };
684 et-orbi = {
685 dependencies = ["tzinfo"];
686 platforms = [];
687 source = {
688 remotes = ["https://rubygems.org"];
689 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
690 type = "gem";
691 };
692 version = "1.1.6";
693 };
694 ethon = {
695 dependencies = ["ffi"];
696 platforms = [];
697 source = {
698 remotes = ["https://rubygems.org"];
699 sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
700 type = "gem";
701 };
702 version = "0.11.0";
703 };
704 excon = {
705 platforms = [];
706 source = {
707 remotes = ["https://rubygems.org"];
708 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
709 type = "gem";
710 };
711 version = "0.62.0";
712 };
713 execjs = {
714 platforms = [];
715 source = {
716 remotes = ["https://rubygems.org"];
717 sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
718 type = "gem";
719 };
720 version = "2.7.0";
721 };
722 eye = {
723 dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
724 platforms = [];
725 source = {
726 remotes = ["https://rubygems.org"];
727 sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
728 type = "gem";
729 };
730 version = "0.10.0";
731 };
732 fabrication = {
733 platforms = [];
734 source = {
735 remotes = ["https://rubygems.org"];
736 sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
737 type = "gem";
738 };
739 version = "2.20.1";
740 };
741 factory_girl = {
742 dependencies = ["activesupport"];
743 platforms = [];
744 source = {
745 remotes = ["https://rubygems.org"];
746 sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
747 type = "gem";
748 };
749 version = "4.8.0";
750 };
751 factory_girl_rails = {
752 dependencies = ["factory_girl" "railties"];
753 platforms = [];
754 source = {
755 remotes = ["https://rubygems.org"];
756 sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
757 type = "gem";
758 };
759 version = "4.8.0";
760 };
761 faraday = {
762 dependencies = ["multipart-post"];
763 platforms = [];
764 source = {
765 remotes = ["https://rubygems.org"];
766 sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
767 type = "gem";
768 };
769 version = "0.15.3";
770 };
771 faraday-cookie_jar = {
772 dependencies = ["faraday" "http-cookie"];
773 platforms = [];
774 source = {
775 remotes = ["https://rubygems.org"];
776 sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
777 type = "gem";
778 };
779 version = "0.0.6";
780 };
781 faraday_middleware = {
782 dependencies = ["faraday"];
783 platforms = [];
784 source = {
785 remotes = ["https://rubygems.org"];
786 sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
787 type = "gem";
788 };
789 version = "0.12.2";
790 };
791 ffi = {
792 platforms = [];
793 source = {
794 remotes = ["https://rubygems.org"];
795 sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
796 type = "gem";
797 };
798 version = "1.9.25";
799 };
800 fixture_builder = {
801 dependencies = ["activerecord" "activesupport" "hashdiff"];
802 platforms = [];
803 source = {
804 remotes = ["https://rubygems.org"];
805 sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
806 type = "gem";
807 };
808 version = "0.5.2.rc3";
809 };
810 fog-aws = {
811 dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
812 platforms = [];
813 source = {
814 remotes = ["https://rubygems.org"];
815 sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
816 type = "gem";
817 };
818 version = "3.3.0";
819 };
820 fog-core = {
821 dependencies = ["builder" "excon" "formatador" "mime-types"];
822 platforms = [];
823 source = {
824 remotes = ["https://rubygems.org"];
825 sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
826 type = "gem";
827 };
828 version = "2.1.2";
829 };
830 fog-json = {
831 dependencies = ["fog-core" "multi_json"];
832 platforms = [];
833 source = {
834 remotes = ["https://rubygems.org"];
835 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
836 type = "gem";
837 };
838 version = "1.2.0";
839 };
840 fog-xml = {
841 dependencies = ["fog-core" "nokogiri"];
842 platforms = [];
843 source = {
844 remotes = ["https://rubygems.org"];
845 sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
846 type = "gem";
847 };
848 version = "0.1.3";
849 };
850 formatador = {
851 platforms = [];
852 source = {
853 remotes = ["https://rubygems.org"];
854 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
855 type = "gem";
856 };
857 version = "0.2.5";
858 };
859 fugit = {
860 dependencies = ["et-orbi" "raabro"];
861 platforms = [];
862 source = {
863 remotes = ["https://rubygems.org"];
864 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
865 type = "gem";
866 };
867 version = "1.1.6";
868 };
869 fuubar = {
870 dependencies = ["rspec-core" "ruby-progressbar"];
871 platforms = [];
872 source = {
873 remotes = ["https://rubygems.org"];
874 sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
875 type = "gem";
876 };
877 version = "2.3.2";
878 };
879 get_process_mem = {
880 platforms = [];
881 source = {
882 remotes = ["https://rubygems.org"];
883 sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
884 type = "gem";
885 };
886 version = "0.2.3";
887 };
888 gherkin = {
889 platforms = [];
890 source = {
891 remotes = ["https://rubygems.org"];
892 sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
893 type = "gem";
894 };
895 version = "5.1.0";
896 };
897 gitlab = {
898 dependencies = ["httparty" "terminal-table"];
899 platforms = [];
900 source = {
901 remotes = ["https://rubygems.org"];
902 sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
903 type = "gem";
904 };
905 version = "4.7.0";
906 };
907 globalid = {
908 dependencies = ["activesupport"];
909 platforms = [];
910 source = {
911 remotes = ["https://rubygems.org"];
912 sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
913 type = "gem";
914 };
915 version = "0.4.1";
916 };
917 gon = {
918 dependencies = ["actionpack" "multi_json" "request_store"];
919 platforms = [];
920 source = {
921 remotes = ["https://rubygems.org"];
922 sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
923 type = "gem";
924 };
925 version = "6.2.1";
926 };
927 guard = {
928 dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
929 platforms = [];
930 source = {
931 remotes = ["https://rubygems.org"];
932 sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
933 type = "gem";
934 };
935 version = "2.15.0";
936 };
937 guard-compat = {
938 platforms = [];
939 source = {
940 remotes = ["https://rubygems.org"];
941 sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
942 type = "gem";
943 };
944 version = "1.2.1";
945 };
946 guard-rspec = {
947 dependencies = ["guard" "guard-compat" "rspec"];
948 platforms = [];
949 source = {
950 remotes = ["https://rubygems.org"];
951 sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
952 type = "gem";
953 };
954 version = "4.7.3";
955 };
956 guard-rubocop = {
957 dependencies = ["guard" "rubocop"];
958 platforms = [];
959 source = {
960 remotes = ["https://rubygems.org"];
961 sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
962 type = "gem";
963 };
964 version = "1.3.0";
965 };
966 haml = {
967 dependencies = ["temple" "tilt"];
968 platforms = [];
969 source = {
970 remotes = ["https://rubygems.org"];
971 sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
972 type = "gem";
973 };
974 version = "5.0.4";
975 };
976 haml_lint = {
977 dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
978 platforms = [];
979 source = {
980 remotes = ["https://rubygems.org"];
981 sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
982 type = "gem";
983 };
984 version = "0.28.0";
985 };
986 hamlit = {
987 dependencies = ["temple" "thor" "tilt"];
988 platforms = [];
989 source = {
990 remotes = ["https://rubygems.org"];
991 sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
992 type = "gem";
993 };
994 version = "2.9.1";
995 };
996 handlebars_assets = {
997 dependencies = ["execjs" "sprockets" "tilt"];
998 platforms = [];
999 source = {
1000 remotes = ["https://rubygems.org"];
1001 sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
1002 type = "gem";
1003 };
1004 version = "0.23.2";
1005 };
1006 hashdiff = {
1007 platforms = [];
1008 source = {
1009 remotes = ["https://rubygems.org"];
1010 sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
1011 type = "gem";
1012 };
1013 version = "0.3.7";
1014 };
1015 hashie = {
1016 platforms = [];
1017 source = {
1018 remotes = ["https://rubygems.org"];
1019 sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
1020 type = "gem";
1021 };
1022 version = "3.5.7";
1023 };
1024 http = {
1025 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1026 platforms = [];
1027 source = {
1028 remotes = ["https://rubygems.org"];
1029 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1030 type = "gem";
1031 };
1032 version = "3.3.0";
1033 };
1034 http-cookie = {
1035 dependencies = ["domain_name"];
1036 platforms = [];
1037 source = {
1038 remotes = ["https://rubygems.org"];
1039 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1040 type = "gem";
1041 };
1042 version = "1.0.3";
1043 };
1044 http-form_data = {
1045 platforms = [];
1046 source = {
1047 remotes = ["https://rubygems.org"];
1048 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1049 type = "gem";
1050 };
1051 version = "2.1.1";
1052 };
1053 http_accept_language = {
1054 platforms = [];
1055 source = {
1056 remotes = ["https://rubygems.org"];
1057 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1058 type = "gem";
1059 };
1060 version = "2.1.1";
1061 };
1062 "http_parser.rb" = {
1063 platforms = [];
1064 source = {
1065 remotes = ["https://rubygems.org"];
1066 sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
1067 type = "gem";
1068 };
1069 version = "0.6.0";
1070 };
1071 httparty = {
1072 dependencies = ["mime-types" "multi_xml"];
1073 platforms = [];
1074 source = {
1075 remotes = ["https://rubygems.org"];
1076 sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
1077 type = "gem";
1078 };
1079 version = "0.16.3";
1080 };
1081 httpclient = {
1082 platforms = [];
1083 source = {
1084 remotes = ["https://rubygems.org"];
1085 sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
1086 type = "gem";
1087 };
1088 version = "2.8.3";
1089 };
1090 i18n = {
1091 dependencies = ["concurrent-ruby"];
1092 platforms = [];
1093 source = {
1094 remotes = ["https://rubygems.org"];
1095 sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
1096 type = "gem";
1097 };
1098 version = "1.1.1";
1099 };
1100 i18n-inflector = {
1101 dependencies = ["i18n"];
1102 platforms = [];
1103 source = {
1104 remotes = ["https://rubygems.org"];
1105 sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
1106 type = "gem";
1107 };
1108 version = "2.6.7";
1109 };
1110 i18n-inflector-rails = {
1111 dependencies = ["actionpack" "i18n-inflector" "railties"];
1112 platforms = [];
1113 source = {
1114 remotes = ["https://rubygems.org"];
1115 sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
1116 type = "gem";
1117 };
1118 version = "1.0.7";
1119 };
1120 ipaddress = {
1121 platforms = [];
1122 source = {
1123 remotes = ["https://rubygems.org"];
1124 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1125 type = "gem";
1126 };
1127 version = "0.8.3";
1128 };
1129 jaro_winkler = {
1130 platforms = [];
1131 source = {
1132 remotes = ["https://rubygems.org"];
1133 sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
1134 type = "gem";
1135 };
1136 version = "1.5.1";
1137 };
1138 jasmine = {
1139 dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
1140 platforms = [];
1141 source = {
1142 remotes = ["https://rubygems.org"];
1143 sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
1144 type = "gem";
1145 };
1146 version = "3.3.0";
1147 };
1148 jasmine-core = {
1149 platforms = [];
1150 source = {
1151 remotes = ["https://rubygems.org"];
1152 sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
1153 type = "gem";
1154 };
1155 version = "3.3.0";
1156 };
1157 jasmine-jquery-rails = {
1158 platforms = [];
1159 source = {
1160 remotes = ["https://rubygems.org"];
1161 sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
1162 type = "gem";
1163 };
1164 version = "2.0.3";
1165 };
1166 jquery-rails = {
1167 dependencies = ["rails-dom-testing" "railties" "thor"];
1168 platforms = [];
1169 source = {
1170 remotes = ["https://rubygems.org"];
1171 sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
1172 type = "gem";
1173 };
1174 version = "4.3.3";
1175 };
1176 js-routes = {
1177 dependencies = ["railties" "sprockets-rails"];
1178 platforms = [];
1179 source = {
1180 remotes = ["https://rubygems.org"];
1181 sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
1182 type = "gem";
1183 };
1184 version = "1.4.4";
1185 };
1186 js_image_paths = {
1187 dependencies = ["rails" "sprockets"];
1188 platforms = [];
1189 source = {
1190 remotes = ["https://rubygems.org"];
1191 sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
1192 type = "gem";
1193 };
1194 version = "0.1.1";
1195 };
1196 json = {
1197 platforms = [];
1198 source = {
1199 remotes = ["https://rubygems.org"];
1200 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1201 type = "gem";
1202 };
1203 version = "2.1.0";
1204 };
1205 json-jwt = {
1206 dependencies = ["activesupport" "aes_key_wrap" "bindata"];
1207 platforms = [];
1208 source = {
1209 remotes = ["https://rubygems.org"];
1210 sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
1211 type = "gem";
1212 };
1213 version = "1.9.4";
1214 };
1215 json-schema = {
1216 dependencies = ["addressable"];
1217 platforms = [];
1218 source = {
1219 remotes = ["https://rubygems.org"];
1220 sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
1221 type = "gem";
1222 };
1223 version = "2.8.1";
1224 };
1225 json-schema-rspec = {
1226 dependencies = ["json-schema" "rspec"];
1227 platforms = [];
1228 source = {
1229 remotes = ["https://rubygems.org"];
1230 sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
1231 type = "gem";
1232 };
1233 version = "0.0.4";
1234 };
1235 jsonpath = {
1236 dependencies = ["multi_json" "to_regexp"];
1237 platforms = [];
1238 source = {
1239 remotes = ["https://rubygems.org"];
1240 sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
1241 type = "gem";
1242 };
1243 version = "0.9.6";
1244 };
1245 jwt = {
1246 platforms = [];
1247 source = {
1248 remotes = ["https://rubygems.org"];
1249 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1250 type = "gem";
1251 };
1252 version = "2.1.0";
1253 };
1254 kgio = {
1255 platforms = [];
1256 source = {
1257 remotes = ["https://rubygems.org"];
1258 sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
1259 type = "gem";
1260 };
1261 version = "2.11.2";
1262 };
1263 kostya-sigar = {
1264 platforms = [];
1265 source = {
1266 remotes = ["https://rubygems.org"];
1267 sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
1268 type = "gem";
1269 };
1270 version = "2.0.4";
1271 };
1272 leaflet-rails = {
1273 dependencies = ["rails"];
1274 platforms = [];
1275 source = {
1276 remotes = ["https://rubygems.org"];
1277 sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
1278 type = "gem";
1279 };
1280 version = "1.3.1";
1281 };
1282 listen = {
1283 dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
1284 platforms = [];
1285 source = {
1286 remotes = ["https://rubygems.org"];
1287 sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
1288 type = "gem";
1289 };
1290 version = "3.1.5";
1291 };
1292 little-plugger = {
1293 platforms = [];
1294 source = {
1295 remotes = ["https://rubygems.org"];
1296 sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
1297 type = "gem";
1298 };
1299 version = "1.1.4";
1300 };
1301 logging = {
1302 dependencies = ["little-plugger" "multi_json"];
1303 platforms = [];
1304 source = {
1305 remotes = ["https://rubygems.org"];
1306 sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
1307 type = "gem";
1308 };
1309 version = "2.2.2";
1310 };
1311 logging-rails = {
1312 dependencies = ["logging"];
1313 platforms = [];
1314 source = {
1315 remotes = ["https://rubygems.org"];
1316 sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
1317 type = "gem";
1318 };
1319 version = "0.6.0";
1320 };
1321 loofah = {
1322 dependencies = ["crass" "nokogiri"];
1323 platforms = [];
1324 source = {
1325 remotes = ["https://rubygems.org"];
1326 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1327 type = "gem";
1328 };
1329 version = "2.2.3";
1330 };
1331 lumberjack = {
1332 platforms = [];
1333 source = {
1334 remotes = ["https://rubygems.org"];
1335 sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
1336 type = "gem";
1337 };
1338 version = "1.0.13";
1339 };
1340 macaddr = {
1341 dependencies = ["systemu"];
1342 platforms = [];
1343 source = {
1344 remotes = ["https://rubygems.org"];
1345 sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
1346 type = "gem";
1347 };
1348 version = "1.7.1";
1349 };
1350 mail = {
1351 dependencies = ["mini_mime"];
1352 platforms = [];
1353 source = {
1354 remotes = ["https://rubygems.org"];
1355 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1356 type = "gem";
1357 };
1358 version = "2.7.1";
1359 };
1360 markdown-it-html5-embed = {
1361 platforms = [];
1362 source = {
1363 remotes = ["https://rubygems.org"];
1364 sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
1365 type = "gem";
1366 };
1367 version = "1.0.0";
1368 };
1369 markerb = {
1370 platforms = [];
1371 source = {
1372 remotes = ["https://rubygems.org"];
1373 sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
1374 type = "gem";
1375 };
1376 version = "1.1.0";
1377 };
1378 memoizable = {
1379 dependencies = ["thread_safe"];
1380 platforms = [];
1381 source = {
1382 remotes = ["https://rubygems.org"];
1383 sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
1384 type = "gem";
1385 };
1386 version = "0.4.2";
1387 };
1388 method_source = {
1389 platforms = [];
1390 source = {
1391 remotes = ["https://rubygems.org"];
1392 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
1393 type = "gem";
1394 };
1395 version = "0.9.2";
1396 };
1397 mime-types = {
1398 dependencies = ["mime-types-data"];
1399 platforms = [];
1400 source = {
1401 remotes = ["https://rubygems.org"];
1402 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1403 type = "gem";
1404 };
1405 version = "3.2.2";
1406 };
1407 mime-types-data = {
1408 platforms = [];
1409 source = {
1410 remotes = ["https://rubygems.org"];
1411 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1412 type = "gem";
1413 };
1414 version = "3.2018.0812";
1415 };
1416 mini_magick = {
1417 platforms = [];
1418 source = {
1419 remotes = ["https://rubygems.org"];
1420 sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
1421 type = "gem";
1422 };
1423 version = "4.9.2";
1424 };
1425 mini_mime = {
1426 platforms = [];
1427 source = {
1428 remotes = ["https://rubygems.org"];
1429 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1430 type = "gem";
1431 };
1432 version = "1.0.1";
1433 };
1434 mini_portile2 = {
1435 platforms = [];
1436 source = {
1437 remotes = ["https://rubygems.org"];
1438 sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
1439 type = "gem";
1440 };
1441 version = "2.3.0";
1442 };
1443 minitest = {
1444 platforms = [];
1445 source = {
1446 remotes = ["https://rubygems.org"];
1447 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1448 type = "gem";
1449 };
1450 version = "5.11.3";
1451 };
1452 mobile-fu = {
1453 dependencies = ["rack-mobile-detect" "rails"];
1454 platforms = [];
1455 source = {
1456 remotes = ["https://rubygems.org"];
1457 sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
1458 type = "gem";
1459 };
1460 version = "1.4.0";
1461 };
1462 multi_json = {
1463 platforms = [];
1464 source = {
1465 remotes = ["https://rubygems.org"];
1466 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1467 type = "gem";
1468 };
1469 version = "1.13.1";
1470 };
1471 multi_test = {
1472 platforms = [];
1473 source = {
1474 remotes = ["https://rubygems.org"];
1475 sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
1476 type = "gem";
1477 };
1478 version = "0.1.2";
1479 };
1480 multi_xml = {
1481 platforms = [];
1482 source = {
1483 remotes = ["https://rubygems.org"];
1484 sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
1485 type = "gem";
1486 };
1487 version = "0.6.0";
1488 };
1489 multipart-post = {
1490 platforms = [];
1491 source = {
1492 remotes = ["https://rubygems.org"];
1493 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1494 type = "gem";
1495 };
1496 version = "2.0.0";
1497 };
1498 naught = {
1499 platforms = [];
1500 source = {
1501 remotes = ["https://rubygems.org"];
1502 sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
1503 type = "gem";
1504 };
1505 version = "1.1.0";
1506 };
1507 nenv = {
1508 platforms = [];
1509 source = {
1510 remotes = ["https://rubygems.org"];
1511 sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
1512 type = "gem";
1513 };
1514 version = "0.3.0";
1515 };
1516 net-ldap = {
1517 platforms = [];
1518 source = {
1519 remotes = ["https://rubygems.org"];
1520 sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
1521 type = "gem";
1522 };
1523 version = "0.16.1";
1524 };
1525 nio4r = {
1526 platforms = [];
1527 source = {
1528 remotes = ["https://rubygems.org"];
1529 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1530 type = "gem";
1531 };
1532 version = "2.3.1";
1533 };
1534 nokogiri = {
1535 dependencies = ["mini_portile2"];
1536 platforms = [];
1537 source = {
1538 remotes = ["https://rubygems.org"];
1539 sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
1540 type = "gem";
1541 };
1542 version = "1.8.5";
1543 };
1544 notiffany = {
1545 dependencies = ["nenv" "shellany"];
1546 platforms = [];
1547 source = {
1548 remotes = ["https://rubygems.org"];
1549 sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
1550 type = "gem";
1551 };
1552 version = "0.1.1";
1553 };
1554 oauth = {
1555 platforms = [];
1556 source = {
1557 remotes = ["https://rubygems.org"];
1558 sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
1559 type = "gem";
1560 };
1561 version = "0.5.4";
1562 };
1563 oauth2 = {
1564 dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
1565 platforms = [];
1566 source = {
1567 remotes = ["https://rubygems.org"];
1568 sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
1569 type = "gem";
1570 };
1571 version = "1.4.1";
1572 };
1573 octokit = {
1574 dependencies = ["sawyer"];
1575 platforms = [];
1576 source = {
1577 remotes = ["https://rubygems.org"];
1578 sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
1579 type = "gem";
1580 };
1581 version = "4.13.0";
1582 };
1583 omniauth = {
1584 dependencies = ["hashie" "rack"];
1585 platforms = [];
1586 source = {
1587 remotes = ["https://rubygems.org"];
1588 sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
1589 type = "gem";
1590 };
1591 version = "1.8.1";
1592 };
1593 omniauth-oauth = {
1594 dependencies = ["oauth" "omniauth"];
1595 platforms = [];
1596 source = {
1597 remotes = ["https://rubygems.org"];
1598 sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
1599 type = "gem";
1600 };
1601 version = "1.1.0";
1602 };
1603 omniauth-oauth2 = {
1604 dependencies = ["oauth2" "omniauth"];
1605 platforms = [];
1606 source = {
1607 remotes = ["https://rubygems.org"];
1608 sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
1609 type = "gem";
1610 };
1611 version = "1.5.0";
1612 };
1613 omniauth-tumblr = {
1614 dependencies = ["multi_json" "omniauth-oauth"];
1615 platforms = [];
1616 source = {
1617 remotes = ["https://rubygems.org"];
1618 sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
1619 type = "gem";
1620 };
1621 version = "1.2";
1622 };
1623 omniauth-twitter = {
1624 dependencies = ["omniauth-oauth" "rack"];
1625 platforms = [];
1626 source = {
1627 remotes = ["https://rubygems.org"];
1628 sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
1629 type = "gem";
1630 };
1631 version = "1.4.0";
1632 };
1633 omniauth-wordpress = {
1634 dependencies = ["omniauth-oauth2"];
1635 platforms = [];
1636 source = {
1637 remotes = ["https://rubygems.org"];
1638 sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
1639 type = "gem";
1640 };
1641 version = "0.2.2";
1642 };
1643 open_graph_reader = {
1644 dependencies = ["faraday" "nokogiri"];
1645 platforms = [];
1646 source = {
1647 remotes = ["https://rubygems.org"];
1648 sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
1649 type = "gem";
1650 };
1651 version = "0.6.2";
1652 };
1653 openid_connect = {
1654 dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
1655 platforms = [];
1656 source = {
1657 remotes = ["https://rubygems.org"];
1658 sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
1659 type = "gem";
1660 };
1661 version = "1.1.6";
1662 };
1663 orm_adapter = {
1664 platforms = [];
1665 source = {
1666 remotes = ["https://rubygems.org"];
1667 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1668 type = "gem";
1669 };
1670 version = "0.5.0";
1671 };
1672 parallel = {
1673 platforms = [];
1674 source = {
1675 remotes = ["https://rubygems.org"];
1676 sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
1677 type = "gem";
1678 };
1679 version = "1.12.1";
1680 };
1681 parser = {
1682 dependencies = ["ast"];
1683 platforms = [];
1684 source = {
1685 remotes = ["https://rubygems.org"];
1686 sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
1687 type = "gem";
1688 };
1689 version = "2.5.3.0";
1690 };
1691 pg = {
1692 platforms = [];
1693 source = {
1694 remotes = ["https://rubygems.org"];
1695 sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
1696 type = "gem";
1697 };
1698 version = "1.1.3";
1699 };
1700 phantomjs = {
1701 platforms = [];
1702 source = {
1703 remotes = ["https://rubygems.org"];
1704 sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
1705 type = "gem";
1706 };
1707 version = "2.1.1.0";
1708 };
1709 poltergeist = {
1710 dependencies = ["capybara" "cliver" "websocket-driver"];
1711 platforms = [];
1712 source = {
1713 remotes = ["https://rubygems.org"];
1714 sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
1715 type = "gem";
1716 };
1717 version = "1.18.1";
1718 };
1719 powerpack = {
1720 platforms = [];
1721 source = {
1722 remotes = ["https://rubygems.org"];
1723 sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
1724 type = "gem";
1725 };
1726 version = "0.1.2";
1727 };
1728 pronto = {
1729 dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
1730 platforms = [];
1731 source = {
1732 remotes = ["https://rubygems.org"];
1733 sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
1734 type = "gem";
1735 };
1736 version = "0.9.5";
1737 };
1738 pronto-eslint = {
1739 dependencies = ["eslintrb" "pronto"];
1740 platforms = [];
1741 source = {
1742 remotes = ["https://rubygems.org"];
1743 sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
1744 type = "gem";
1745 };
1746 version = "0.9.1";
1747 };
1748 pronto-haml = {
1749 dependencies = ["haml_lint" "pronto"];
1750 platforms = [];
1751 source = {
1752 remotes = ["https://rubygems.org"];
1753 sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
1754 type = "gem";
1755 };
1756 version = "0.9.0";
1757 };
1758 pronto-rubocop = {
1759 dependencies = ["pronto" "rubocop"];
1760 platforms = [];
1761 source = {
1762 remotes = ["https://rubygems.org"];
1763 sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
1764 type = "gem";
1765 };
1766 version = "0.9.1";
1767 };
1768 pronto-scss = {
1769 dependencies = ["pronto" "scss_lint"];
1770 platforms = [];
1771 source = {
1772 remotes = ["https://rubygems.org"];
1773 sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
1774 type = "gem";
1775 };
1776 version = "0.9.1";
1777 };
1778 pry = {
1779 dependencies = ["coderay" "method_source"];
1780 platforms = [];
1781 source = {
1782 remotes = ["https://rubygems.org"];
1783 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
1784 type = "gem";
1785 };
1786 version = "0.12.2";
1787 };
1788 pry-byebug = {
1789 dependencies = ["byebug" "pry"];
1790 platforms = [];
1791 source = {
1792 remotes = ["https://rubygems.org"];
1793 sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
1794 type = "gem";
1795 };
1796 version = "3.6.0";
1797 };
1798 public_suffix = {
1799 platforms = [];
1800 source = {
1801 remotes = ["https://rubygems.org"];
1802 sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
1803 type = "gem";
1804 };
1805 version = "3.0.3";
1806 };
1807 raabro = {
1808 platforms = [];
1809 source = {
1810 remotes = ["https://rubygems.org"];
1811 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1812 type = "gem";
1813 };
1814 version = "1.1.6";
1815 };
1816 rack = {
1817 platforms = [];
1818 source = {
1819 remotes = ["https://rubygems.org"];
1820 sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
1821 type = "gem";
1822 };
1823 version = "2.0.6";
1824 };
1825 rack-cors = {
1826 platforms = [];
1827 source = {
1828 remotes = ["https://rubygems.org"];
1829 sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
1830 type = "gem";
1831 };
1832 version = "1.0.2";
1833 };
1834 rack-google-analytics = {
1835 dependencies = ["actionpack" "activesupport"];
1836 platforms = [];
1837 source = {
1838 remotes = ["https://rubygems.org"];
1839 sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
1840 type = "gem";
1841 };
1842 version = "1.2.0";
1843 };
1844 rack-mobile-detect = {
1845 dependencies = ["rack"];
1846 platforms = [];
1847 source = {
1848 remotes = ["https://rubygems.org"];
1849 sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
1850 type = "gem";
1851 };
1852 version = "0.4.0";
1853 };
1854 rack-oauth2 = {
1855 dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
1856 platforms = [];
1857 source = {
1858 remotes = ["https://rubygems.org"];
1859 sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
1860 type = "gem";
1861 };
1862 version = "1.9.3";
1863 };
1864 rack-piwik = {
1865 platforms = [];
1866 source = {
1867 remotes = ["https://rubygems.org"];
1868 sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
1869 type = "gem";
1870 };
1871 version = "0.3.0";
1872 };
1873 rack-protection = {
1874 dependencies = ["rack"];
1875 platforms = [];
1876 source = {
1877 remotes = ["https://rubygems.org"];
1878 sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
1879 type = "gem";
1880 };
1881 version = "2.0.4";
1882 };
1883 rack-rewrite = {
1884 platforms = [];
1885 source = {
1886 remotes = ["https://rubygems.org"];
1887 sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
1888 type = "gem";
1889 };
1890 version = "1.5.1";
1891 };
1892 rack-ssl = {
1893 dependencies = ["rack"];
1894 platforms = [];
1895 source = {
1896 remotes = ["https://rubygems.org"];
1897 sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
1898 type = "gem";
1899 };
1900 version = "1.4.1";
1901 };
1902 rack-test = {
1903 dependencies = ["rack"];
1904 platforms = [];
1905 source = {
1906 remotes = ["https://rubygems.org"];
1907 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1908 type = "gem";
1909 };
1910 version = "1.1.0";
1911 };
1912 rails = {
1913 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
1914 platforms = [];
1915 source = {
1916 remotes = ["https://rubygems.org"];
1917 sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
1918 type = "gem";
1919 };
1920 version = "5.1.6";
1921 };
1922 rails-assets-autosize = {
1923 platforms = [];
1924 source = {
1925 remotes = ["https://rails-assets.org"];
1926 sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
1927 type = "gem";
1928 };
1929 version = "4.0.2";
1930 };
1931 rails-assets-backbone = {
1932 dependencies = ["rails-assets-underscore"];
1933 platforms = [];
1934 source = {
1935 remotes = ["https://rails-assets.org"];
1936 sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
1937 type = "gem";
1938 };
1939 version = "1.3.3";
1940 };
1941 rails-assets-blueimp-gallery = {
1942 platforms = [];
1943 source = {
1944 remotes = ["https://rails-assets.org"];
1945 sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
1946 type = "gem";
1947 };
1948 version = "2.33.0";
1949 };
1950 rails-assets-bootstrap = {
1951 dependencies = ["rails-assets-jquery"];
1952 platforms = [];
1953 source = {
1954 remotes = ["https://rails-assets.org"];
1955 sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
1956 type = "gem";
1957 };
1958 version = "3.3.7";
1959 };
1960 rails-assets-bootstrap-markdown = {
1961 dependencies = ["rails-assets-bootstrap"];
1962 platforms = [];
1963 source = {
1964 remotes = ["https://rails-assets.org"];
1965 sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
1966 type = "gem";
1967 };
1968 version = "2.10.0";
1969 };
1970 rails-assets-corejs-typeahead = {
1971 dependencies = ["rails-assets-jquery"];
1972 platforms = [];
1973 source = {
1974 remotes = ["https://rails-assets.org"];
1975 sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
1976 type = "gem";
1977 };
1978 version = "1.2.1";
1979 };
1980 rails-assets-diaspora_jsxc = {
1981 dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
1982 platforms = [];
1983 source = {
1984 remotes = ["https://rails-assets.org"];
1985 sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
1986 type = "gem";
1987 };
1988 version = "0.1.5.develop.7";
1989 };
1990 rails-assets-emojione = {
1991 platforms = [];
1992 source = {
1993 remotes = ["https://rails-assets.org"];
1994 sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
1995 type = "gem";
1996 };
1997 version = "2.0.1";
1998 };
1999 "rails-assets-favico.js" = {
2000 platforms = [];
2001 source = {
2002 remotes = ["https://rails-assets.org"];
2003 sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
2004 type = "gem";
2005 };
2006 version = "0.3.10";
2007 };
2008 rails-assets-fine-uploader = {
2009 platforms = [];
2010 source = {
2011 remotes = ["https://rails-assets.org"];
2012 sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
2013 type = "gem";
2014 };
2015 version = "5.13.0";
2016 };
2017 rails-assets-highlightjs = {
2018 platforms = [];
2019 source = {
2020 remotes = ["https://rails-assets.org"];
2021 sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
2022 type = "gem";
2023 };
2024 version = "9.12.0";
2025 };
2026 rails-assets-jasmine = {
2027 platforms = [];
2028 source = {
2029 remotes = ["https://rails-assets.org"];
2030 sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
2031 type = "gem";
2032 };
2033 version = "3.3.0";
2034 };
2035 rails-assets-jasmine-ajax = {
2036 dependencies = ["rails-assets-jasmine"];
2037 platforms = [];
2038 source = {
2039 remotes = ["https://rails-assets.org"];
2040 sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
2041 type = "gem";
2042 };
2043 version = "3.4.0";
2044 };
2045 rails-assets-jquery = {
2046 platforms = [];
2047 source = {
2048 remotes = ["https://rails-assets.org"];
2049 sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
2050 type = "gem";
2051 };
2052 version = "3.3.1";
2053 };
2054 rails-assets-jquery-colorbox = {
2055 dependencies = ["rails-assets-jquery"];
2056 platforms = [];
2057 source = {
2058 remotes = ["https://rails-assets.org"];
2059 sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
2060 type = "gem";
2061 };
2062 version = "1.6.4";
2063 };
2064 rails-assets-jquery-fullscreen-plugin = {
2065 platforms = [];
2066 source = {
2067 remotes = ["https://rails-assets.org"];
2068 sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
2069 type = "gem";
2070 };
2071 version = "0.5.0";
2072 };
2073 rails-assets-jquery-placeholder = {
2074 dependencies = ["rails-assets-jquery"];
2075 platforms = [];
2076 source = {
2077 remotes = ["https://rails-assets.org"];
2078 sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
2079 type = "gem";
2080 };
2081 version = "2.3.1";
2082 };
2083 rails-assets-jquery-textchange = {
2084 dependencies = ["rails-assets-jquery"];
2085 platforms = [];
2086 source = {
2087 remotes = ["https://rails-assets.org"];
2088 sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
2089 type = "gem";
2090 };
2091 version = "0.2.3";
2092 };
2093 "rails-assets-jquery.are-you-sure" = {
2094 dependencies = ["rails-assets-jquery"];
2095 platforms = [];
2096 source = {
2097 remotes = ["https://rails-assets.org"];
2098 sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
2099 type = "gem";
2100 };
2101 version = "1.9.0";
2102 };
2103 "rails-assets-jquery.slimscroll" = {
2104 platforms = [];
2105 source = {
2106 remotes = ["https://rails-assets.org"];
2107 sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
2108 type = "gem";
2109 };
2110 version = "1.3.8";
2111 };
2112 "rails-assets-jquery.ui" = {
2113 dependencies = ["rails-assets-jquery"];
2114 platforms = [];
2115 source = {
2116 remotes = ["https://rails-assets.org"];
2117 sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
2118 type = "gem";
2119 };
2120 version = "1.11.4";
2121 };
2122 rails-assets-markdown-it = {
2123 platforms = [];
2124 source = {
2125 remotes = ["https://rails-assets.org"];
2126 sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
2127 type = "gem";
2128 };
2129 version = "8.4.2";
2130 };
2131 rails-assets-markdown-it--markdown-it-for-inline = {
2132 platforms = [];
2133 source = {
2134 remotes = ["https://rails-assets.org"];
2135 sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
2136 type = "gem";
2137 };
2138 version = "0.1.1";
2139 };
2140 rails-assets-markdown-it-diaspora-mention = {
2141 platforms = [];
2142 source = {
2143 remotes = ["https://rails-assets.org"];
2144 sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
2145 type = "gem";
2146 };
2147 version = "1.2.0";
2148 };
2149 rails-assets-markdown-it-hashtag = {
2150 platforms = [];
2151 source = {
2152 remotes = ["https://rails-assets.org"];
2153 sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
2154 type = "gem";
2155 };
2156 version = "0.4.0";
2157 };
2158 rails-assets-markdown-it-sanitizer = {
2159 platforms = [];
2160 source = {
2161 remotes = ["https://rails-assets.org"];
2162 sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
2163 type = "gem";
2164 };
2165 version = "0.4.3";
2166 };
2167 rails-assets-markdown-it-sub = {
2168 platforms = [];
2169 source = {
2170 remotes = ["https://rails-assets.org"];
2171 sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
2172 type = "gem";
2173 };
2174 version = "1.0.0";
2175 };
2176 rails-assets-markdown-it-sup = {
2177 platforms = [];
2178 source = {
2179 remotes = ["https://rails-assets.org"];
2180 sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
2181 type = "gem";
2182 };
2183 version = "1.0.0";
2184 };
2185 rails-assets-underscore = {
2186 platforms = [];
2187 source = {
2188 remotes = ["https://rails-assets.org"];
2189 sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
2190 type = "gem";
2191 };
2192 version = "1.9.1";
2193 };
2194 rails-assets-utatti-perfect-scrollbar = {
2195 platforms = [];
2196 source = {
2197 remotes = ["https://rails-assets.org"];
2198 sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
2199 type = "gem";
2200 };
2201 version = "1.4.0";
2202 };
2203 rails-controller-testing = {
2204 dependencies = ["actionpack" "actionview" "activesupport"];
2205 platforms = [];
2206 source = {
2207 remotes = ["https://rubygems.org"];
2208 sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
2209 type = "gem";
2210 };
2211 version = "1.0.2";
2212 };
2213 rails-dom-testing = {
2214 dependencies = ["activesupport" "nokogiri"];
2215 platforms = [];
2216 source = {
2217 remotes = ["https://rubygems.org"];
2218 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
2219 type = "gem";
2220 };
2221 version = "2.0.3";
2222 };
2223 rails-html-sanitizer = {
2224 dependencies = ["loofah"];
2225 platforms = [];
2226 source = {
2227 remotes = ["https://rubygems.org"];
2228 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2229 type = "gem";
2230 };
2231 version = "1.0.4";
2232 };
2233 rails-i18n = {
2234 dependencies = ["i18n" "railties"];
2235 platforms = [];
2236 source = {
2237 remotes = ["https://rubygems.org"];
2238 sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
2239 type = "gem";
2240 };
2241 version = "5.1.2";
2242 };
2243 rails-timeago = {
2244 dependencies = ["actionpack" "activesupport"];
2245 platforms = [];
2246 source = {
2247 remotes = ["https://rubygems.org"];
2248 sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
2249 type = "gem";
2250 };
2251 version = "2.16.0";
2252 };
2253 railties = {
2254 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2255 platforms = [];
2256 source = {
2257 remotes = ["https://rubygems.org"];
2258 sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
2259 type = "gem";
2260 };
2261 version = "5.1.6";
2262 };
2263 rainbow = {
2264 dependencies = ["rake"];
2265 platforms = [];
2266 source = {
2267 remotes = ["https://rubygems.org"];
2268 sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
2269 type = "gem";
2270 };
2271 version = "2.2.2";
2272 };
2273 raindrops = {
2274 platforms = [];
2275 source = {
2276 remotes = ["https://rubygems.org"];
2277 sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
2278 type = "gem";
2279 };
2280 version = "0.19.0";
2281 };
2282 rake = {
2283 platforms = [];
2284 source = {
2285 remotes = ["https://rubygems.org"];
2286 sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
2287 type = "gem";
2288 };
2289 version = "12.3.1";
2290 };
2291 rb-fsevent = {
2292 platforms = [];
2293 source = {
2294 remotes = ["https://rubygems.org"];
2295 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
2296 type = "gem";
2297 };
2298 version = "0.10.3";
2299 };
2300 rb-inotify = {
2301 dependencies = ["ffi"];
2302 platforms = [];
2303 source = {
2304 remotes = ["https://rubygems.org"];
2305 sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
2306 type = "gem";
2307 };
2308 version = "0.9.10";
2309 };
2310 redcarpet = {
2311 platforms = [];
2312 source = {
2313 remotes = ["https://rubygems.org"];
2314 sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
2315 type = "gem";
2316 };
2317 version = "3.4.0";
2318 };
2319 redis = {
2320 platforms = [];
2321 source = {
2322 remotes = ["https://rubygems.org"];
2323 sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
2324 type = "gem";
2325 };
2326 version = "3.3.5";
2327 };
2328 regexp_parser = {
2329 platforms = [];
2330 source = {
2331 remotes = ["https://rubygems.org"];
2332 sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
2333 type = "gem";
2334 };
2335 version = "1.3.0";
2336 };
2337 request_store = {
2338 dependencies = ["rack"];
2339 platforms = [];
2340 source = {
2341 remotes = ["https://rubygems.org"];
2342 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2343 type = "gem";
2344 };
2345 version = "1.4.1";
2346 };
2347 responders = {
2348 dependencies = ["actionpack" "railties"];
2349 platforms = [];
2350 source = {
2351 remotes = ["https://rubygems.org"];
2352 sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
2353 type = "gem";
2354 };
2355 version = "2.4.0";
2356 };
2357 rspec = {
2358 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
2359 platforms = [];
2360 source = {
2361 remotes = ["https://rubygems.org"];
2362 sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
2363 type = "gem";
2364 };
2365 version = "3.8.0";
2366 };
2367 rspec-core = {
2368 dependencies = ["rspec-support"];
2369 platforms = [];
2370 source = {
2371 remotes = ["https://rubygems.org"];
2372 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2373 type = "gem";
2374 };
2375 version = "3.8.0";
2376 };
2377 rspec-expectations = {
2378 dependencies = ["diff-lcs" "rspec-support"];
2379 platforms = [];
2380 source = {
2381 remotes = ["https://rubygems.org"];
2382 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2383 type = "gem";
2384 };
2385 version = "3.8.2";
2386 };
2387 rspec-json_expectations = {
2388 platforms = [];
2389 source = {
2390 remotes = ["https://rubygems.org"];
2391 sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
2392 type = "gem";
2393 };
2394 version = "2.1.0";
2395 };
2396 rspec-mocks = {
2397 dependencies = ["diff-lcs" "rspec-support"];
2398 platforms = [];
2399 source = {
2400 remotes = ["https://rubygems.org"];
2401 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2402 type = "gem";
2403 };
2404 version = "3.8.0";
2405 };
2406 rspec-rails = {
2407 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2408 platforms = [];
2409 source = {
2410 remotes = ["https://rubygems.org"];
2411 sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
2412 type = "gem";
2413 };
2414 version = "3.8.1";
2415 };
2416 rspec-support = {
2417 platforms = [];
2418 source = {
2419 remotes = ["https://rubygems.org"];
2420 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2421 type = "gem";
2422 };
2423 version = "3.8.0";
2424 };
2425 rubocop = {
2426 dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
2427 platforms = [];
2428 source = {
2429 remotes = ["https://rubygems.org"];
2430 sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
2431 type = "gem";
2432 };
2433 version = "0.60.0";
2434 };
2435 ruby-oembed = {
2436 platforms = [];
2437 source = {
2438 remotes = ["https://rubygems.org"];
2439 sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
2440 type = "gem";
2441 };
2442 version = "0.12.0";
2443 };
2444 ruby-progressbar = {
2445 platforms = [];
2446 source = {
2447 remotes = ["https://rubygems.org"];
2448 sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
2449 type = "gem";
2450 };
2451 version = "1.10.0";
2452 };
2453 ruby_dep = {
2454 platforms = [];
2455 source = {
2456 remotes = ["https://rubygems.org"];
2457 sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
2458 type = "gem";
2459 };
2460 version = "1.5.0";
2461 };
2462 rubyzip = {
2463 platforms = [];
2464 source = {
2465 remotes = ["https://rubygems.org"];
2466 sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
2467 type = "gem";
2468 };
2469 version = "1.2.2";
2470 };
2471 rugged = {
2472 platforms = [];
2473 source = {
2474 remotes = ["https://rubygems.org"];
2475 sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
2476 type = "gem";
2477 };
2478 version = "0.27.5";
2479 };
2480 safe_yaml = {
2481 platforms = [];
2482 source = {
2483 remotes = ["https://rubygems.org"];
2484 sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
2485 type = "gem";
2486 };
2487 version = "1.0.4";
2488 };
2489 sass = {
2490 platforms = [];
2491 source = {
2492 remotes = ["https://rubygems.org"];
2493 sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
2494 type = "gem";
2495 };
2496 version = "3.4.25";
2497 };
2498 sass-rails = {
2499 dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
2500 platforms = [];
2501 source = {
2502 remotes = ["https://rubygems.org"];
2503 sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
2504 type = "gem";
2505 };
2506 version = "5.0.7";
2507 };
2508 sawyer = {
2509 dependencies = ["addressable" "faraday"];
2510 platforms = [];
2511 source = {
2512 remotes = ["https://rubygems.org"];
2513 sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
2514 type = "gem";
2515 };
2516 version = "0.8.1";
2517 };
2518 scss_lint = {
2519 dependencies = ["rake" "sass"];
2520 platforms = [];
2521 source = {
2522 remotes = ["https://rubygems.org"];
2523 sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
2524 type = "gem";
2525 };
2526 version = "0.55.0";
2527 };
2528 secure_headers = {
2529 platforms = [];
2530 source = {
2531 remotes = ["https://rubygems.org"];
2532 sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
2533 type = "gem";
2534 };
2535 version = "6.0.0";
2536 };
2537 shellany = {
2538 platforms = [];
2539 source = {
2540 remotes = ["https://rubygems.org"];
2541 sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
2542 type = "gem";
2543 };
2544 version = "0.0.1";
2545 };
2546 shoulda-matchers = {
2547 dependencies = ["activesupport"];
2548 platforms = [];
2549 source = {
2550 remotes = ["https://rubygems.org"];
2551 sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
2552 type = "gem";
2553 };
2554 version = "3.1.2";
2555 };
2556 sidekiq = {
2557 dependencies = ["connection_pool" "rack-protection" "redis"];
2558 platforms = [];
2559 source = {
2560 remotes = ["https://rubygems.org"];
2561 sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
2562 type = "gem";
2563 };
2564 version = "5.2.3";
2565 };
2566 sidekiq-cron = {
2567 dependencies = ["fugit" "sidekiq"];
2568 platforms = [];
2569 source = {
2570 remotes = ["https://rubygems.org"];
2571 sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
2572 type = "gem";
2573 };
2574 version = "1.0.4";
2575 };
2576 simple_captcha2 = {
2577 dependencies = ["rails"];
2578 platforms = [];
2579 source = {
2580 remotes = ["https://rubygems.org"];
2581 sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
2582 type = "gem";
2583 };
2584 version = "0.4.3";
2585 };
2586 simple_oauth = {
2587 platforms = [];
2588 source = {
2589 remotes = ["https://rubygems.org"];
2590 sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
2591 type = "gem";
2592 };
2593 version = "0.3.1";
2594 };
2595 simplecov = {
2596 dependencies = ["docile" "json" "simplecov-html"];
2597 platforms = [];
2598 source = {
2599 remotes = ["https://rubygems.org"];
2600 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2601 type = "gem";
2602 };
2603 version = "0.16.1";
2604 };
2605 simplecov-html = {
2606 platforms = [];
2607 source = {
2608 remotes = ["https://rubygems.org"];
2609 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2610 type = "gem";
2611 };
2612 version = "0.10.2";
2613 };
2614 sinon-rails = {
2615 dependencies = ["railties"];
2616 platforms = [];
2617 source = {
2618 remotes = ["https://rubygems.org"];
2619 sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
2620 type = "gem";
2621 };
2622 version = "1.15.0";
2623 };
2624 spring = {
2625 dependencies = ["activesupport"];
2626 platforms = [];
2627 source = {
2628 remotes = ["https://rubygems.org"];
2629 sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
2630 type = "gem";
2631 };
2632 version = "2.0.2";
2633 };
2634 spring-commands-cucumber = {
2635 dependencies = ["spring"];
2636 platforms = [];
2637 source = {
2638 remotes = ["https://rubygems.org"];
2639 sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
2640 type = "gem";
2641 };
2642 version = "1.0.1";
2643 };
2644 spring-commands-rspec = {
2645 dependencies = ["spring"];
2646 platforms = [];
2647 source = {
2648 remotes = ["https://rubygems.org"];
2649 sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
2650 type = "gem";
2651 };
2652 version = "1.0.4";
2653 };
2654 sprockets = {
2655 dependencies = ["concurrent-ruby" "rack"];
2656 platforms = [];
2657 source = {
2658 remotes = ["https://rubygems.org"];
2659 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2660 type = "gem";
2661 };
2662 version = "3.7.2";
2663 };
2664 sprockets-rails = {
2665 dependencies = ["actionpack" "activesupport" "sprockets"];
2666 platforms = [];
2667 source = {
2668 remotes = ["https://rubygems.org"];
2669 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2670 type = "gem";
2671 };
2672 version = "3.2.1";
2673 };
2674 state_machines = {
2675 platforms = [];
2676 source = {
2677 remotes = ["https://rubygems.org"];
2678 sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
2679 type = "gem";
2680 };
2681 version = "0.5.0";
2682 };
2683 string-direction = {
2684 platforms = [];
2685 source = {
2686 remotes = ["https://rubygems.org"];
2687 sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
2688 type = "gem";
2689 };
2690 version = "1.2.1";
2691 };
2692 swd = {
2693 dependencies = ["activesupport" "attr_required" "httpclient"];
2694 platforms = [];
2695 source = {
2696 remotes = ["https://rubygems.org"];
2697 sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
2698 type = "gem";
2699 };
2700 version = "1.1.2";
2701 };
2702 sysexits = {
2703 platforms = [];
2704 source = {
2705 remotes = ["https://rubygems.org"];
2706 sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
2707 type = "gem";
2708 };
2709 version = "1.2.0";
2710 };
2711 systemu = {
2712 platforms = [];
2713 source = {
2714 remotes = ["https://rubygems.org"];
2715 sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
2716 type = "gem";
2717 };
2718 version = "2.6.5";
2719 };
2720 temple = {
2721 platforms = [];
2722 source = {
2723 remotes = ["https://rubygems.org"];
2724 sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
2725 type = "gem";
2726 };
2727 version = "0.8.0";
2728 };
2729 term-ansicolor = {
2730 dependencies = ["tins"];
2731 platforms = [];
2732 source = {
2733 remotes = ["https://rubygems.org"];
2734 sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
2735 type = "gem";
2736 };
2737 version = "1.7.0";
2738 };
2739 terminal-table = {
2740 dependencies = ["unicode-display_width"];
2741 platforms = [];
2742 source = {
2743 remotes = ["https://rubygems.org"];
2744 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2745 type = "gem";
2746 };
2747 version = "1.8.0";
2748 };
2749 thor = {
2750 platforms = [];
2751 source = {
2752 remotes = ["https://rubygems.org"];
2753 sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
2754 type = "gem";
2755 };
2756 version = "0.19.4";
2757 };
2758 thread_safe = {
2759 platforms = [];
2760 source = {
2761 remotes = ["https://rubygems.org"];
2762 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2763 type = "gem";
2764 };
2765 version = "0.3.6";
2766 };
2767 tilt = {
2768 platforms = [];
2769 source = {
2770 remotes = ["https://rubygems.org"];
2771 sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
2772 type = "gem";
2773 };
2774 version = "2.0.8";
2775 };
2776 timecop = {
2777 platforms = [];
2778 source = {
2779 remotes = ["https://rubygems.org"];
2780 sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
2781 type = "gem";
2782 };
2783 version = "0.9.1";
2784 };
2785 timers = {
2786 platforms = [];
2787 source = {
2788 remotes = ["https://rubygems.org"];
2789 sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
2790 type = "gem";
2791 };
2792 version = "4.2.0";
2793 };
2794 tins = {
2795 platforms = [];
2796 source = {
2797 remotes = ["https://rubygems.org"];
2798 sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
2799 type = "gem";
2800 };
2801 version = "1.20.2";
2802 };
2803 to_regexp = {
2804 platforms = [];
2805 source = {
2806 remotes = ["https://rubygems.org"];
2807 sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
2808 type = "gem";
2809 };
2810 version = "0.2.1";
2811 };
2812 turbo_dev_assets = {
2813 platforms = [];
2814 source = {
2815 remotes = ["https://rubygems.org"];
2816 sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
2817 type = "gem";
2818 };
2819 version = "0.0.2";
2820 };
2821 twitter = {
2822 dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
2823 platforms = [];
2824 source = {
2825 remotes = ["https://rubygems.org"];
2826 sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
2827 type = "gem";
2828 };
2829 version = "6.2.0";
2830 };
2831 twitter-text = {
2832 dependencies = ["unf"];
2833 platforms = [];
2834 source = {
2835 remotes = ["https://rubygems.org"];
2836 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2837 type = "gem";
2838 };
2839 version = "1.14.7";
2840 };
2841 typhoeus = {
2842 dependencies = ["ethon"];
2843 platforms = [];
2844 source = {
2845 remotes = ["https://rubygems.org"];
2846 sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
2847 type = "gem";
2848 };
2849 version = "1.3.1";
2850 };
2851 tzinfo = {
2852 dependencies = ["thread_safe"];
2853 platforms = [];
2854 source = {
2855 remotes = ["https://rubygems.org"];
2856 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2857 type = "gem";
2858 };
2859 version = "1.2.5";
2860 };
2861 uglifier = {
2862 dependencies = ["execjs"];
2863 platforms = [];
2864 source = {
2865 remotes = ["https://rubygems.org"];
2866 sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
2867 type = "gem";
2868 };
2869 version = "4.1.19";
2870 };
2871 unf = {
2872 dependencies = ["unf_ext"];
2873 platforms = [];
2874 source = {
2875 remotes = ["https://rubygems.org"];
2876 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2877 type = "gem";
2878 };
2879 version = "0.1.4";
2880 };
2881 unf_ext = {
2882 platforms = [];
2883 source = {
2884 remotes = ["https://rubygems.org"];
2885 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2886 type = "gem";
2887 };
2888 version = "0.0.7.5";
2889 };
2890 unicode-display_width = {
2891 platforms = [];
2892 source = {
2893 remotes = ["https://rubygems.org"];
2894 sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
2895 type = "gem";
2896 };
2897 version = "1.4.0";
2898 };
2899 unicorn = {
2900 dependencies = ["kgio" "raindrops"];
2901 platforms = [];
2902 source = {
2903 remotes = ["https://rubygems.org"];
2904 sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
2905 type = "gem";
2906 };
2907 version = "5.4.1";
2908 };
2909 unicorn-worker-killer = {
2910 dependencies = ["get_process_mem" "unicorn"];
2911 platforms = [];
2912 source = {
2913 remotes = ["https://rubygems.org"];
2914 sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
2915 type = "gem";
2916 };
2917 version = "0.4.4";
2918 };
2919 uuid = {
2920 dependencies = ["macaddr"];
2921 platforms = [];
2922 source = {
2923 remotes = ["https://rubygems.org"];
2924 sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
2925 type = "gem";
2926 };
2927 version = "2.3.9";
2928 };
2929 valid = {
2930 platforms = [];
2931 source = {
2932 remotes = ["https://rubygems.org"];
2933 sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
2934 type = "gem";
2935 };
2936 version = "1.2.0";
2937 };
2938 validate_email = {
2939 dependencies = ["activemodel" "mail"];
2940 platforms = [];
2941 source = {
2942 remotes = ["https://rubygems.org"];
2943 sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
2944 type = "gem";
2945 };
2946 version = "0.1.6";
2947 };
2948 validate_url = {
2949 dependencies = ["activemodel" "addressable"];
2950 platforms = [];
2951 source = {
2952 remotes = ["https://rubygems.org"];
2953 sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
2954 type = "gem";
2955 };
2956 version = "1.0.2";
2957 };
2958 versionist = {
2959 dependencies = ["activesupport" "railties" "yard"];
2960 platforms = [];
2961 source = {
2962 remotes = ["https://rubygems.org"];
2963 sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
2964 type = "gem";
2965 };
2966 version = "1.7.0";
2967 };
2968 warden = {
2969 dependencies = ["rack"];
2970 platforms = [];
2971 source = {
2972 remotes = ["https://rubygems.org"];
2973 sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
2974 type = "gem";
2975 };
2976 version = "1.2.8";
2977 };
2978 webfinger = {
2979 dependencies = ["activesupport" "httpclient"];
2980 platforms = [];
2981 source = {
2982 remotes = ["https://rubygems.org"];
2983 sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
2984 type = "gem";
2985 };
2986 version = "1.1.0";
2987 };
2988 webmock = {
2989 dependencies = ["addressable" "crack" "hashdiff"];
2990 platforms = [];
2991 source = {
2992 remotes = ["https://rubygems.org"];
2993 sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
2994 type = "gem";
2995 };
2996 version = "3.4.2";
2997 };
2998 websocket-driver = {
2999 dependencies = ["websocket-extensions"];
3000 platforms = [];
3001 source = {
3002 remotes = ["https://rubygems.org"];
3003 sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
3004 type = "gem";
3005 };
3006 version = "0.6.5";
3007 };
3008 websocket-extensions = {
3009 platforms = [];
3010 source = {
3011 remotes = ["https://rubygems.org"];
3012 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
3013 type = "gem";
3014 };
3015 version = "0.1.3";
3016 };
3017 will_paginate = {
3018 platforms = [];
3019 source = {
3020 remotes = ["https://rubygems.org"];
3021 sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
3022 type = "gem";
3023 };
3024 version = "3.1.6";
3025 };
3026 xpath = {
3027 dependencies = ["nokogiri"];
3028 platforms = [];
3029 source = {
3030 remotes = ["https://rubygems.org"];
3031 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
3032 type = "gem";
3033 };
3034 version = "3.2.0";
3035 };
3036 yard = {
3037 platforms = [];
3038 source = {
3039 remotes = ["https://rubygems.org"];
3040 sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
3041 type = "gem";
3042 };
3043 version = "0.9.16";
3044 };
3045}
diff --git a/virtual/modules/websites/tools/diaspora/ldap.patch b/virtual/modules/websites/tools/diaspora/ldap.patch
new file mode 100644
index 0000000..3d4f785
--- /dev/null
+++ b/virtual/modules/websites/tools/diaspora/ldap.patch
@@ -0,0 +1,256 @@
1commit 936a14e225037aca4cdeac11c843c7985e636c88
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Mon Jul 24 19:58:24 2017 +0200
4
5 Add LDAP to diaspora
6
7diff --git a/Gemfile b/Gemfile
8index 414b0138d..2a934e9c9 100644
9--- a/Gemfile
10+++ b/Gemfile
11@@ -217,6 +217,9 @@ gem "thor", "0.19.1"
12
13 # gem "therubyracer", :platform => :ruby
14
15+# LDAP
16+gem 'net-ldap', '~> 0.16'
17+
18 group :production do # we don"t install these on travis to speed up test runs
19 # Analytics
20
21diff --git a/Gemfile.lock b/Gemfile.lock
22index 84f8172e4..cdbf19fcd 100644
23--- a/Gemfile.lock 2019-01-13 19:55:52.538561762 +0100
24+++ b/Gemfile.lock 2019-01-13 19:58:11.087099067 +0100
25@@ -398,6 +398,7 @@
26 mysql2 (0.5.2)
27 naught (1.1.0)
28 nenv (0.3.0)
29+ net-ldap (0.16.1)
30 nio4r (2.3.1)
31 nokogiri (1.8.5)
32 mini_portile2 (~> 2.3.0)
33@@ -820,6 +821,7 @@
34 minitest
35 mobile-fu (= 1.4.0)
36 mysql2 (= 0.5.2)
37+ net-ldap (~> 0.16)
38 nokogiri (= 1.8.5)
39 omniauth (= 1.8.1)
40 omniauth-tumblr (= 1.2)
41diff --git a/app/models/user.rb b/app/models/user.rb
42index 940a48f25..d1e2beeee 100644
43--- a/app/models/user.rb
44+++ b/app/models/user.rb
45@@ -337,6 +337,12 @@ class User < ActiveRecord::Base
46 end
47
48 def send_confirm_email
49+ if skip_email_confirmation?
50+ self.email = unconfirmed_email
51+ self.unconfirmed_email = nil
52+ save
53+ end
54+
55 return if unconfirmed_email.blank?
56 Workers::Mail::ConfirmEmail.perform_async(id)
57 end
58@@ -554,6 +560,14 @@ class User < ActiveRecord::Base
59 end
60 end
61
62+ def ldap_user?
63+ AppConfig.ldap.enable? && ldap_dn.present?
64+ end
65+
66+ def skip_email_confirmation?
67+ ldap_user? && AppConfig.ldap.skip_email_confirmation?
68+ end
69+
70 private
71
72 def clearable_fields
73diff --git a/config/defaults.yml b/config/defaults.yml
74index c046aff07..66e9afa13 100644
75--- a/config/defaults.yml
76+++ b/config/defaults.yml
77@@ -202,6 +202,20 @@ defaults:
78 scope: tags
79 include_user_tags: false
80 pod_tags:
81+ ldap:
82+ enable: false
83+ host: localhost
84+ port: 389
85+ only_ldap: true
86+ mail_attribute: mail
87+ skip_email_confirmation: true
88+ use_bind_dn: true
89+ bind_dn: "cn=diaspora,dc=example,dc=com"
90+ bind_pw: "password"
91+ search_base: "dc=example,dc=com"
92+ search_filter: "uid=%{username}"
93+ bind_template: "uid=%{username},dc=example,dc=com"
94+
95
96 development:
97 environment:
98diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
99index b2573625d..c357c8651 100644
100--- a/config/diaspora.yml.example
101+++ b/config/diaspora.yml.example
102@@ -710,6 +710,36 @@ configuration: ## Section
103 ## If scope is 'tags', a comma separated list of tags here can be set.
104 ## For example "linux,diaspora", to receive posts related to these tags
105 #pod_tags:
106+ ldap:
107+ # Uncomment next line if you want to use LDAP on your instance
108+ enable: true
109+ host: localhost
110+ port: 389
111+ # Use only LDAP authentication (don't try other means)
112+ only_ldap: true
113+ # LDAP attribute to find the user's e-mail. Necessary to create accounts
114+ # for not existing users
115+ mail_attribute: mail
116+ # Skip e-mail confirmation when creating an account via LDAP.
117+ skip_email_confirmation: true
118+ # ----- Using bind_dn and bind_pw
119+ # bind_dn and bind_pw may be used if the diaspora instance
120+ # should be able to connect to LDAP to find and search for users.
121+
122+ use_bind_dn: true
123+ bind_dn: "cn=diaspora,dc=example,dc=com"
124+ bind_pw: "password"
125+ search_base: "dc=example,dc=com"
126+ # This is the filter with which to search for the user. %{username} will
127+ # be replaced by the given login.
128+ search_filter: "uid=%{username}"
129+ #
130+ # ----- Using template
131+ # This setting doesn't require a diaspora LDAP user. Use a template, and
132+ # diaspora will try to login with the templated dn and password
133+ #
134+ # bind_template: "uid=%{username},dc=example,dc=com"
135+
136
137 ## Here you can override settings defined above if you need
138 ## to have them different in different environments.
139diff --git a/config/initializers/0_ldap_authenticatable.rb b/config/initializers/0_ldap_authenticatable.rb
140new file mode 100644
141index 000000000..49846502f
142--- /dev/null
143+++ b/config/initializers/0_ldap_authenticatable.rb
144@@ -0,0 +1,82 @@
145+require 'net/ldap'
146+require 'devise/strategies/authenticatable'
147+
148+module Devise
149+ module Strategies
150+ class LdapAuthenticatable < Authenticatable
151+ def valid?
152+ AppConfig.ldap.enable? && params[:user].present?
153+ end
154+
155+ def authenticate!
156+ ldap = Net::LDAP.new(
157+ host: AppConfig.ldap.host,
158+ port: AppConfig.ldap.port,
159+ encryption: :simple_tls,
160+ )
161+
162+ if AppConfig.ldap.use_bind_dn?
163+ ldap.auth AppConfig.ldap.bind_dn, AppConfig.ldap.bind_pw
164+
165+ if !ldap.bind
166+ return fail(:ldap_configuration_error)
167+ end
168+
169+ search_filter = AppConfig.ldap.search_filter % { username: params[:user][:username] }
170+
171+ result = ldap.search(base: AppConfig.ldap.search_base, filter: search_filter, result_set: true)
172+
173+ if result.count != 1
174+ return login_fail
175+ end
176+
177+ user_dn = result.first.dn
178+ user_email = result.first[AppConfig.ldap.mail_attribute].first
179+ else
180+ user_dn = AppConfig.ldap.bind_template % { username: params[:user][:username] }
181+ end
182+
183+ ldap.auth user_dn, params[:user][:password]
184+
185+ if ldap.bind
186+ user = User.find_by(ldap_dn: user_dn)
187+
188+ # We don't want to trust too much the email attribute from
189+ # LDAP: if the user can edit it himself, he may login as
190+ # anyone
191+ if user.nil?
192+ if !AppConfig.ldap.use_bind_dn?
193+ result = ldap.search(base: user_dn, scope: Net::LDAP::SearchScope_BaseObject, filter: "(objectClass=*)", result_set: true)
194+ user_email = result.first[AppConfig.ldap.mail_attribute].first
195+ end
196+
197+ if user_email.present? && User.find_by(email: user_email).nil?
198+ # Password is used for remember_me token
199+ user = User.build(email: user_email, ldap_dn: user_dn, password: SecureRandom.hex, username: params[:user][:username])
200+ user.save
201+ user.seed_aspects
202+ elsif User.find_by(email: user_email).present?
203+ return fail(:ldap_existing_email)
204+ else
205+ return fail(:ldap_cannot_create_account_without_email)
206+ end
207+ end
208+
209+ success!(user)
210+ else
211+ return login_fail
212+ end
213+ end
214+
215+ def login_fail
216+ if AppConfig.ldap.only_ldap?
217+ return fail(:ldap_invalid_login)
218+ else
219+ return pass
220+ end
221+ end
222+ end
223+ end
224+end
225+
226+Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
227diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
228index 3698e2373..14e88063e 100644
229--- a/config/initializers/devise.rb
230+++ b/config/initializers/devise.rb
231@@ -250,10 +250,9 @@ Devise.setup do |config|
232 # If you want to use other strategies, that are not supported by Devise, or
233 # change the failure app, you can configure them inside the config.warden block.
234 #
235- # config.warden do |manager|
236- # manager.intercept_401 = false
237- # manager.default_strategies(:scope => :user).unshift :some_external_strategy
238- # end
239+ config.warden do |manager|
240+ manager.default_strategies(scope: :user).unshift :ldap_authenticatable
241+ end
242
243 # ==> Mountable engine configurations
244 # When using Devise inside an engine, let's call it `MyEngine`, and this engine
245diff --git a/db/migrate/20170724182100_add_ldap_dn_to_users.rb b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
246new file mode 100644
247index 000000000..f5cc84d11
248--- /dev/null
249+++ b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
250@@ -0,0 +1,6 @@
251+class AddLdapDnToUsers < ActiveRecord::Migration
252+ def change
253+ add_column :users, :ldap_dn, :text, null: true, default: nil
254+ add_index :users, ['ldap_dn'], :length => { "ldap_dn" => 191 }
255+ end
256+end