about summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorParnell Springmeyer <parnell@digitalmentat.com>2017-01-29 05:54:01 -0600
committerParnell Springmeyer <parnell@digitalmentat.com>2017-01-29 05:54:01 -0600
commit6777e6f812913f0213b71392bf2499a3e49b8dee (patch)
tree1870777ba0d1ba0be8a66fd94d6c070b62729cdf /pkgs/servers
parentc5f1f9a3b5bcf5d2990aba0ab086767d1d384922 (diff)
parent82bcfef109ecf58ac1503e4cab15ae53dd524f4b (diff)
downloadnixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar.gz
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar.bz2
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar.lz
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar.xz
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.tar.zst
nixlib-6777e6f812913f0213b71392bf2499a3e49b8dee.zip
Merging with upstream
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/felix/default.nix11
-rw-r--r--pkgs/servers/http/apache-httpd/2.2.nix80
-rw-r--r--pkgs/servers/http/apache-modules/mod_dnssd/default.nix10
-rw-r--r--pkgs/servers/web-apps/frab/Gemfile88
-rw-r--r--pkgs/servers/web-apps/frab/Gemfile.lock329
-rw-r--r--pkgs/servers/web-apps/frab/default.nix46
-rw-r--r--pkgs/servers/web-apps/frab/gemset.nix932
7 files changed, 1408 insertions, 88 deletions
diff --git a/pkgs/servers/felix/default.nix b/pkgs/servers/felix/default.nix
index 17a50506fa92..5ce680e36460 100644
--- a/pkgs/servers/felix/default.nix
+++ b/pkgs/servers/felix/default.nix
@@ -1,10 +1,11 @@
 {stdenv, fetchurl}:
 
-stdenv.mkDerivation {
-  name = "apache-felix-2.0.5";
+stdenv.mkDerivation rec {
+  name = "apache-felix-${version}";
+  version = "5.6.1";
   src = fetchurl {
-    url = http://apache.xl-mirror.nl/felix/org.apache.felix.main.distribution-2.0.5.tar.gz;
-    sha256 = "14nva0q1b45kmmalcls5yx97syd4vn3vcp8gywck1098qhidi66g";
+    url = "mirror://apache/felix/org.apache.felix.main.distribution-${version}.tar.gz";
+    sha256 = "0kis26iajzdid162j4i7g558q09x4hn9z7pqqys6ipb0fj84hz1x";
   };
   buildCommand =
   ''
@@ -15,7 +16,7 @@ stdenv.mkDerivation {
   '';
   meta = with stdenv.lib; {
     description = "An OSGi gateway";
-    homepage = http://felix.apache.org;
+    homepage = https://felix.apache.org;
     license = licenses.asl20;
     maintainers = [ maintainers.sander ];
   };
diff --git a/pkgs/servers/http/apache-httpd/2.2.nix b/pkgs/servers/http/apache-httpd/2.2.nix
deleted file mode 100644
index 8cab241f85c0..000000000000
--- a/pkgs/servers/http/apache-httpd/2.2.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, openssl, perl, zlib
-, sslSupport, proxySupport ? true
-, apr, aprutil, pcre
-, ldapSupport ? true, openldap
-, # Multi-processing module to use.  This is built into the server and
-  # cannot be selected at runtime.
-  mpm ? "prefork"
-}:
-
-assert sslSupport -> openssl != null;
-assert ldapSupport -> aprutil.ldapSupport && openldap != null;
-assert mpm == "prefork" || mpm == "worker" || mpm == "event";
-
-stdenv.mkDerivation rec {
-  version = "2.2.31";
-  name = "apache-httpd-${version}";
-
-  src = fetchurl {
-    url = "mirror://apache/httpd/httpd-${version}.tar.bz2";
-    sha256 = "1b165zi7jrrlz5wmyy3b34lcs3dl4g0dymfb0qxwdnimylcrsbzk";
-  };
-
-  # FIXME: -dev depends on -doc
-  outputs = [ "out" "dev" "doc" ];
-  setOutputFlags = false; # it would move $out/modules, etc.
-
-  propagatedBuildInputs = [ apr ]; # otherwise mod_* fail to find includes often
-  buildInputs = [ pkgconfig perl aprutil pcre zlib ] ++
-    stdenv.lib.optional sslSupport openssl;
-
-  # Required for ‘pthread_cancel’.
-  NIX_LDFLAGS = (if stdenv.isDarwin then "" else "-lgcc_s");
-
-  patchPhase = ''
-    sed -i config.layout -e "s|installbuilddir:.*|installbuilddir: $dev/share/build|"
-  '';
-
-  preConfigure = ''
-    configureFlags="$configureFlags --includedir=$dev/include"
-  '';
-  configureFlags = ''
-    --with-z=${zlib.dev}
-    --with-pcre=${pcre.dev}
-    --enable-mods-shared=all
-    --enable-authn-alias
-    ${if proxySupport then "--enable-proxy" else ""}
-    ${if sslSupport then "--enable-ssl --with-ssl=${openssl.dev}" else ""}
-    ${if ldapSupport then "--enable-ldap --enable-authnz-ldap" else ""}
-    --with-mpm=${mpm}
-    --enable-cache
-    --enable-disk-cache
-    --enable-file-cache
-    --enable-mem-cache
-    --docdir=$(doc)/share/doc
-  '';
-
-  enableParallelBuilding = true;
-
-  stripDebugList = "lib modules bin";
-
-  postInstall = ''
-    mkdir -p $doc/share/doc/httpd
-    mv $out/manual $doc/share/doc/httpd
-    mkdir -p $dev/bin
-    mv $out/bin/apxs $dev/bin/apxs
-  '';
-
-  passthru = {
-    inherit apr aprutil sslSupport proxySupport;
-  };
-
-  meta = {
-    description = "Apache HTTPD, the world's most popular web server";
-    branch      = "2.2";
-    homepage    = http://httpd.apache.org/;
-    license     = stdenv.lib.licenses.asl20;
-    platforms   = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
-    maintainers = with stdenv.lib.maintainers; [ eelco lovek323 ];
-  };
-}
diff --git a/pkgs/servers/http/apache-modules/mod_dnssd/default.nix b/pkgs/servers/http/apache-modules/mod_dnssd/default.nix
index 06f12820a10d..80cbf12d2a6b 100644
--- a/pkgs/servers/http/apache-modules/mod_dnssd/default.nix
+++ b/pkgs/servers/http/apache-modules/mod_dnssd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, apacheHttpd_2_2, apr, avahi }:
+{ stdenv, fetchurl, fetchpatch, pkgconfig, apacheHttpd, apr, avahi }:
 
 stdenv.mkDerivation rec {
   name = "mod_dnssd-0.6";
@@ -10,7 +10,12 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--disable-lynx" ];
 
-  buildInputs = [ pkgconfig apacheHttpd_2_2 avahi apr ];
+  buildInputs = [ pkgconfig apacheHttpd avahi apr ];
+
+  patches = [ (fetchpatch {
+    url = "http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/vivid/mod-dnssd/vivid/download/package-import%40ubuntu.com-20130530193334-kqebiy78q534or5k/portforapache2.4.pat-20130530222510-7tlw5btqchd04edb-3/port-for-apache2.4.patch";
+    sha256 = "1hgcxwy1q8fsxfqyg95w8m45zbvxzskf1jxd87ljj57l7x1wwp4r";
+  }) ];
 
   installPhase = ''
     mkdir -p $out/modules
@@ -25,4 +30,3 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ lethalman ];
   };
 }
-
diff --git a/pkgs/servers/web-apps/frab/Gemfile b/pkgs/servers/web-apps/frab/Gemfile
new file mode 100644
index 000000000000..098b8f3d7d7a
--- /dev/null
+++ b/pkgs/servers/web-apps/frab/Gemfile
@@ -0,0 +1,88 @@
+source 'https://rubygems.org'
+
+if ENV['CUSTOM_RUBY_VERSION']
+  ruby ENV['CUSTOM_RUBY_VERSION'] # i.e.: '2.3'
+end
+
+gem 'rails', '~> 4.2'
+
+# Use SCSS for stylesheets
+gem 'sass-rails', '~> 5.0'
+# Use Uglifier as compressor for JavaScript assets
+gem 'uglifier', '>= 1.3.0'
+# Use CoffeeScript for .coffee assets and views
+gem 'coffee-rails', '~> 4.1.0'
+
+gem 'mysql2', group: :mysql
+gem 'pg', group: :postgresql
+gem 'sqlite3', group: :sqlite3
+
+# Use Puma as the app server
+gem 'puma'
+
+# Capistrano for deployment
+group :capistrano do
+  gem 'airbrussh'
+  gem 'capistrano', '~> 3.4.0', require: false
+  gem 'capistrano-rails',   require: false
+  gem 'capistrano-bundler', require: false
+  gem 'capistrano-rvm',     require: false
+  gem 'capistrano3-puma',   require: false
+end
+
+# Use jquery as the JavaScript library
+gem 'jquery-rails'
+gem 'jquery-migrate-rails'
+gem 'jquery-ui-rails'
+
+# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
+gem 'jbuilder', '~> 2.0'
+
+gem 'activeresource'
+gem 'acts_as_commentable'
+gem 'bcrypt'
+gem 'cancancan'
+gem 'cocoon'
+gem 'dotenv-rails'
+gem 'haml'
+gem 'localized_language_select', github: 'frab/localized_language_select', branch: 'master'
+gem 'nokogiri'
+gem 'paperclip', '~> 4.1'
+gem 'paper_trail'
+gem 'prawn', '< 1.0'
+gem 'prawn_rails'
+gem 'ransack'
+gem 'ri_cal'
+gem 'roust'
+gem 'rqrcode'
+#gem 'roust', :git => 'git@github.com:bulletproofnetworks/roust.git'
+gem 'simple_form'
+gem 'sucker_punch'
+gem 'transitions', require: ['transitions', 'active_record/transitions']
+gem 'will_paginate'
+
+group :production do
+  gem 'exception_notification'
+end
+
+group :development, :test do
+  gem 'bullet'
+  gem 'pry-rails'
+  gem 'pry-byebug'
+  gem 'letter_opener'
+  gem 'faker'
+end
+
+group :test do
+  gem 'database_cleaner'
+  gem 'factory_girl_rails', '~> 4.0'
+  gem 'shoulda'
+end
+
+group :doc do
+  gem 'redcarpet'       # documentation
+  gem 'github-markdown' # documentation
+  gem 'yard'            # documentation
+  # gem 'rails-erd'      # graph
+  # gem 'ruby-graphviz', require: 'graphviz' # Optional: only required for graphing
+end
diff --git a/pkgs/servers/web-apps/frab/Gemfile.lock b/pkgs/servers/web-apps/frab/Gemfile.lock
new file mode 100644
index 000000000000..530c54ebd898
--- /dev/null
+++ b/pkgs/servers/web-apps/frab/Gemfile.lock
@@ -0,0 +1,329 @@
+GIT
+  remote: git://github.com/frab/localized_language_select.git
+  revision: 85df6b97789de6e29c630808b630e56a1b76f80c
+  branch: master
+  specs:
+    localized_language_select (0.3.0)
+      rails (>= 4.1.0)
+
+GEM
+  remote: https://rubygems.org/
+  specs:
+    actionmailer (4.2.7.1)
+      actionpack (= 4.2.7.1)
+      actionview (= 4.2.7.1)
+      activejob (= 4.2.7.1)
+      mail (~> 2.5, >= 2.5.4)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+    actionpack (4.2.7.1)
+      actionview (= 4.2.7.1)
+      activesupport (= 4.2.7.1)
+      rack (~> 1.6)
+      rack-test (~> 0.6.2)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    actionview (4.2.7.1)
+      activesupport (= 4.2.7.1)
+      builder (~> 3.1)
+      erubis (~> 2.7.0)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    activejob (4.2.7.1)
+      activesupport (= 4.2.7.1)
+      globalid (>= 0.3.0)
+    activemodel (4.2.7.1)
+      activesupport (= 4.2.7.1)
+      builder (~> 3.1)
+    activerecord (4.2.7.1)
+      activemodel (= 4.2.7.1)
+      activesupport (= 4.2.7.1)
+      arel (~> 6.0)
+    activeresource (4.1.0)
+      activemodel (~> 4.0)
+      activesupport (~> 4.0)
+      rails-observers (~> 0.1.2)
+    activesupport (4.2.7.1)
+      i18n (~> 0.7)
+      json (~> 1.7, >= 1.7.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    acts_as_commentable (4.0.2)
+    addressable (2.4.0)
+    airbrussh (1.1.1)
+      sshkit (>= 1.6.1, != 1.7.0)
+    arel (6.0.3)
+    bcrypt (3.1.11)
+    builder (3.2.2)
+    bullet (5.4.0)
+      activesupport (>= 3.0.0)
+      uniform_notifier (~> 1.10.0)
+    byebug (9.0.5)
+    cancancan (1.15.0)
+    capistrano (3.4.1)
+      i18n
+      rake (>= 10.0.0)
+      sshkit (~> 1.3)
+    capistrano-bundler (1.1.4)
+      capistrano (~> 3.1)
+      sshkit (~> 1.2)
+    capistrano-rails (1.1.8)
+      capistrano (~> 3.1)
+      capistrano-bundler (~> 1.1)
+    capistrano-rvm (0.1.2)
+      capistrano (~> 3.0)
+      sshkit (~> 1.2)
+    capistrano3-puma (1.2.1)
+      capistrano (~> 3.0)
+      puma (>= 2.6)
+    chunky_png (1.3.7)
+    climate_control (0.0.3)
+      activesupport (>= 3.0)
+    cocaine (0.5.8)
+      climate_control (>= 0.0.3, < 1.0)
+    cocoon (1.2.9)
+    coderay (1.1.1)
+    coffee-rails (4.1.1)
+      coffee-script (>= 2.2.0)
+      railties (>= 4.0.0, < 5.1.x)
+    coffee-script (2.4.1)
+      coffee-script-source
+      execjs
+    coffee-script-source (1.10.0)
+    concurrent-ruby (1.0.2)
+    database_cleaner (1.5.3)
+    dotenv (2.1.1)
+    dotenv-rails (2.1.1)
+      dotenv (= 2.1.1)
+      railties (>= 4.0, < 5.1)
+    erubis (2.7.0)
+    exception_notification (4.2.1)
+      actionmailer (>= 4.0, < 6)
+      activesupport (>= 4.0, < 6)
+    execjs (2.7.0)
+    factory_girl (4.7.0)
+      activesupport (>= 3.0.0)
+    factory_girl_rails (4.7.0)
+      factory_girl (~> 4.7.0)
+      railties (>= 3.0.0)
+    faker (1.6.6)
+      i18n (~> 0.5)
+    github-markdown (0.6.9)
+    globalid (0.3.7)
+      activesupport (>= 4.1.0)
+    haml (4.0.7)
+      tilt
+    httparty (0.14.0)
+      multi_xml (>= 0.5.2)
+    i18n (0.7.0)
+    jbuilder (2.6.0)
+      activesupport (>= 3.0.0, < 5.1)
+      multi_json (~> 1.2)
+    jquery-migrate-rails (1.2.1)
+    jquery-rails (4.2.1)
+      rails-dom-testing (>= 1, < 3)
+      railties (>= 4.2.0)
+      thor (>= 0.14, < 2.0)
+    jquery-ui-rails (5.0.5)
+      railties (>= 3.2.16)
+    json (1.8.3)
+    launchy (2.4.3)
+      addressable (~> 2.3)
+    letter_opener (1.4.1)
+      launchy (~> 2.2)
+    loofah (2.0.3)
+      nokogiri (>= 1.5.9)
+    mail (2.6.4)
+      mime-types (>= 1.16, < 4)
+    method_source (0.8.2)
+    mime-types (3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2016.0521)
+    mimemagic (0.3.0)
+    mini_portile2 (2.1.0)
+    minitest (5.9.1)
+    multi_json (1.12.1)
+    multi_xml (0.5.5)
+    mysql2 (0.4.4)
+    net-scp (1.2.1)
+      net-ssh (>= 2.6.5)
+    net-ssh (3.2.0)
+    nokogiri (1.6.7.2)
+      mini_portile2 (~> 2.0.0.rc2)
+      pkg-config (~> 1.1.7)
+    paper_trail (5.2.2)
+      activerecord (>= 3.0, < 6.0)
+      request_store (~> 1.1)
+    paperclip (4.3.7)
+      activemodel (>= 3.2.0)
+      activesupport (>= 3.2.0)
+      cocaine (~> 0.5.5)
+      mime-types
+      mimemagic (= 0.3.0)
+    pdf-core (0.1.6)
+    pg (0.19.0)
+    pkg-config (1.1.7)
+    polyamorous (1.3.1)
+      activerecord (>= 3.0)
+    prawn (0.15.0)
+      pdf-core (~> 0.1.3)
+      ttfunk (~> 1.1.0)
+    prawn_rails (0.0.11)
+      prawn (>= 0.11.1)
+      railties (>= 3.0.0)
+    pry (0.10.4)
+      coderay (~> 1.1.0)
+      method_source (~> 0.8.1)
+      slop (~> 3.4)
+    pry-byebug (3.4.0)
+      byebug (~> 9.0)
+      pry (~> 0.10)
+    pry-rails (0.3.4)
+      pry (>= 0.9.10)
+    puma (3.6.0)
+    rack (1.6.4)
+    rack-test (0.6.3)
+      rack (>= 1.0)
+    rails (4.2.7.1)
+      actionmailer (= 4.2.7.1)
+      actionpack (= 4.2.7.1)
+      actionview (= 4.2.7.1)
+      activejob (= 4.2.7.1)
+      activemodel (= 4.2.7.1)
+      activerecord (= 4.2.7.1)
+      activesupport (= 4.2.7.1)
+      bundler (>= 1.3.0, < 2.0)
+      railties (= 4.2.7.1)
+      sprockets-rails
+    rails-deprecated_sanitizer (1.0.3)
+      activesupport (>= 4.2.0.alpha)
+    rails-dom-testing (1.0.7)
+      activesupport (>= 4.2.0.beta, < 5.0)
+      nokogiri (~> 1.6.0)
+      rails-deprecated_sanitizer (>= 1.0.1)
+    rails-html-sanitizer (1.0.3)
+      loofah (~> 2.0)
+    rails-observers (0.1.2)
+      activemodel (~> 4.0)
+    railties (4.2.7.1)
+      actionpack (= 4.2.7.1)
+      activesupport (= 4.2.7.1)
+      rake (>= 0.8.7)
+      thor (>= 0.18.1, < 2.0)
+    rake (11.3.0)
+    ransack (1.8.2)
+      actionpack (>= 3.0)
+      activerecord (>= 3.0)
+      activesupport (>= 3.0)
+      i18n
+      polyamorous (~> 1.3)
+    redcarpet (3.3.4)
+    request_store (1.3.1)
+    ri_cal (0.8.8)
+    roust (1.8.9)
+      activesupport (>= 4.0.10)
+      httparty (>= 0.13.1)
+      mail (>= 2.5.4)
+    rqrcode (0.10.1)
+      chunky_png (~> 1.0)
+    sass (3.4.22)
+    sass-rails (5.0.6)
+      railties (>= 4.0.0, < 6)
+      sass (~> 3.1)
+      sprockets (>= 2.8, < 4.0)
+      sprockets-rails (>= 2.0, < 4.0)
+      tilt (>= 1.1, < 3)
+    shoulda (3.5.0)
+      shoulda-context (~> 1.0, >= 1.0.1)
+      shoulda-matchers (>= 1.4.1, < 3.0)
+    shoulda-context (1.2.1)
+    shoulda-matchers (2.8.0)
+      activesupport (>= 3.0.0)
+    simple_form (3.3.1)
+      actionpack (> 4, < 5.1)
+      activemodel (> 4, < 5.1)
+    slop (3.6.0)
+    sprockets (3.7.0)
+      concurrent-ruby (~> 1.0)
+      rack (> 1, < 3)
+    sprockets-rails (3.2.0)
+      actionpack (>= 4.0)
+      activesupport (>= 4.0)
+      sprockets (>= 3.0.0)
+    sqlite3 (1.3.11)
+    sshkit (1.11.3)
+      net-scp (>= 1.1.2)
+      net-ssh (>= 2.8.0)
+    sucker_punch (2.0.2)
+      concurrent-ruby (~> 1.0.0)
+    thor (0.19.1)
+    thread_safe (0.3.5)
+    tilt (2.0.5)
+    transitions (1.2.0)
+    ttfunk (1.1.1)
+    tzinfo (1.2.2)
+      thread_safe (~> 0.1)
+    uglifier (3.0.2)
+      execjs (>= 0.3.0, < 3)
+    uniform_notifier (1.10.0)
+    will_paginate (3.1.3)
+    yard (0.9.5)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  activeresource
+  acts_as_commentable
+  airbrussh
+  bcrypt
+  bullet
+  cancancan
+  capistrano (~> 3.4.0)
+  capistrano-bundler
+  capistrano-rails
+  capistrano-rvm
+  capistrano3-puma
+  cocoon
+  coffee-rails (~> 4.1.0)
+  database_cleaner
+  dotenv-rails
+  exception_notification
+  factory_girl_rails (~> 4.0)
+  faker
+  github-markdown
+  haml
+  jbuilder (~> 2.0)
+  jquery-migrate-rails
+  jquery-rails
+  jquery-ui-rails
+  letter_opener
+  localized_language_select!
+  mysql2
+  nokogiri
+  paper_trail
+  paperclip (~> 4.1)
+  pg
+  prawn (< 1.0)
+  prawn_rails
+  pry-byebug
+  pry-rails
+  puma
+  rails (~> 4.2)
+  ransack
+  redcarpet
+  ri_cal
+  roust
+  rqrcode
+  sass-rails (~> 5.0)
+  shoulda
+  simple_form
+  sqlite3
+  sucker_punch
+  transitions
+  uglifier (>= 1.3.0)
+  will_paginate
+  yard
+
+BUNDLED WITH
+   1.13.1
diff --git a/pkgs/servers/web-apps/frab/default.nix b/pkgs/servers/web-apps/frab/default.nix
new file mode 100644
index 000000000000..8ee6afaa8499
--- /dev/null
+++ b/pkgs/servers/web-apps/frab/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, bundlerEnv, fetchFromGitHub, ruby, nodejs }:
+
+let
+  env = bundlerEnv {
+    name = "frab";
+    inherit ruby;
+    gemfile = ./Gemfile;
+    lockfile = ./Gemfile.lock;
+    gemset = ./gemset.nix;
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "frab-2016-12-28";
+
+  src = fetchFromGitHub {
+    owner = "frab";
+    repo = "frab";
+    rev = "e4bbcfd1a9db7f89f53a8702c236d9628bafb72c";
+    sha256 = "04pzmif8jxjww3fdf2zbg3k7cm49vxc9hhf4xhmvdmvywgin6fqp";
+  };
+
+  buildInputs = [ env nodejs ];
+
+  buildPhase = ''
+    cp config/database.yml.template config/database.yml
+    cp .env.development .env.production
+    bundler exec rake assets:precompile RAILS_ENV=production
+    rm .env.production
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r . $out/share/frab
+
+    ln -sf /run/frab/database.yml $out/share/frab/config/database.yml
+    rm -rf $out/share/frab/tmp $out/share/frab/public/system
+    ln -sf /run/frab/system $out/share/frab/public/system
+    ln -sf /tmp $out/share/frab/tmp
+  '';
+
+  passthru = {
+    inherit env ruby;
+  };
+}
diff --git a/pkgs/servers/web-apps/frab/gemset.nix b/pkgs/servers/web-apps/frab/gemset.nix
new file mode 100644
index 000000000000..9f881579f42d
--- /dev/null
+++ b/pkgs/servers/web-apps/frab/gemset.nix
@@ -0,0 +1,932 @@
+{
+  actionmailer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lw1pss1mrjm7x7qcg9pvxv55rz3d994yf3mwmlfg1y12fxq00n3";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  actionpack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ray5bvlmkimjax011zsw0mz9llfkqrfm7q1avjlp4i0kpcz8zlh";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  actionview = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11m2x5nlbqrw79fh6h7m444lrka7wwy32b0dvgqg7ilbzih43k0c";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  activejob = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ish5wd8nvmj7f6x1i22aw5ycizy5n1z1c7f3kyxmqwhw7lb0gaz";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  activemodel = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0acz0mbmahsc9mn41275fpfnrqwig5k09m3xhz3455kv90fn79v5";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  activerecord = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lk8l6i9p7qfl0pg261v5yph0w0sc0vysrdzc6bm5i5rxgi68flj";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  activeresource = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nr5is20cx18s7vg8bdrdc996s2abl3h7fsi1q6mqsrzw7nrv2fa";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  activesupport = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gds12k7nxrcc09b727a458ndidy1nfcllj9x22jcaj7pppvq6r4";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  acts_as_commentable = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p4bwyqmm4ybcscn292aixschdzvns2dpl8a7w4zm0rqy2619cc9";
+      type = "gem";
+    };
+    version = "4.0.2";
+  };
+  addressable = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mpn7sbjl477h56gmxsjqb89r5s3w7vx5af994ssgc3iamvgzgvs";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  airbrussh = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pv22d2kjdbsg9q45jca3f5gsylr2r1wfpn58g58xj4s4q4r95nx";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  arel = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk";
+      type = "gem";
+    };
+    version = "6.0.3";
+  };
+  bcrypt = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d254sdhdj6mzak3fb5x3jam8b94pvl1srladvs53j05a89j5z50";
+      type = "gem";
+    };
+    version = "3.1.11";
+  };
+  builder = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  bullet = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06pba7bdjnazbl0yhhvlina08nkawnm76zihkaam4k7fm0yrq1k0";
+      type = "gem";
+    };
+    version = "5.4.0";
+  };
+  byebug = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18sdnscwwm76i2kbcib2ckwfwpq8b1dbfr97gdcx3j1x547yqv9x";
+      type = "gem";
+    };
+    version = "9.0.5";
+  };
+  cancancan = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05kb459laaw339n7mas37v4k83nwz228bfpaghgybza347341x85";
+      type = "gem";
+    };
+    version = "1.15.0";
+  };
+  capistrano = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f73w6gpml0ickmwky1cn6d8392q075zy10a323f3vmyvxyhr0jb";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  capistrano-bundler = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f4iikm7pn0li2lj6p53wl0d6y7svn0h76z9c6c582mmwxa9c72p";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  capistrano-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03lzihrq72rwcqq7jiqak79wy0xbdnymn5gxj0bfgfjlg5kpgssw";
+      type = "gem";
+    };
+    version = "1.1.8";
+  };
+  capistrano-rvm = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15sy8zcal041yy5kb7fcdqnxvndgdhg3w1kvb5dk7hfjk3ypznsa";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  capistrano3-puma = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ynz1arnr07kcl0vsaa1znhp2ywhhs4fwndnkw8sasr9bydksln8";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  chunky_png = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1zy4gyfp7rapr2yxcljkw6qh0chkwf356i387b3fg85cwdj4xh";
+      type = "gem";
+    };
+    version = "1.3.7";
+  };
+  climate_control = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0krknwk6b8lwv1j9kjbxib6kf5zh4pxkf3y2vcyycx5d6nci1s55";
+      type = "gem";
+    };
+    version = "0.0.3";
+  };
+  cocaine = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
+      type = "gem";
+    };
+    version = "0.5.8";
+  };
+  cocoon = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gzznkrs6qy31v85cvdqyn5wd3vwlciwibf9clmd6gi4dns21pmv";
+      type = "gem";
+    };
+    version = "1.2.9";
+  };
+  coderay = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x6z923iwr1hi04k6kz5a6llrixflz8h5sskl9mhaaxy9jx2x93r";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  coffee-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mv1kaw3z4ry6cm51w8pfrbby40gqwxanrqyqr0nvs8j1bscc1gw";
+      type = "gem";
+    };
+    version = "4.1.1";
+  };
+  coffee-script = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  coffee-script-source = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k4fg39rrkl3bpgchfj94fbl9s4ysaz16w8dkqncf2vyf79l3qz0";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  concurrent-ruby = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kb4sav7yli12pjr8lscv8z49g52a5xzpfg3z9h8clzw6z74qjsw";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  database_cleaner = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fx6zmqznklmkbjl6f713jyl11d4g9q220rcl86m2jp82r8kfwjj";
+      type = "gem";
+    };
+    version = "1.5.3";
+  };
+  dotenv = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p6zz0xzb15vq8jphpw2fh6m4dianw7s76ci8vj9x3zxayrn4lfm";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  dotenv-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17s6c0yqaz01xd5wywjscbvv0pa3grak2lhwby91j84qm6h95vxz";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  erubis = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  exception_notification = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vclsr0rjfy1khvqyj67lgpa0v14nb542vvjkyaswn367nnmijhw";
+      type = "gem";
+    };
+    version = "4.2.1";
+  };
+  execjs = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  factory_girl = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xzl4z9z390fsnyxp10c9if2n46zan3n6zwwpfnwc33crv4s410i";
+      type = "gem";
+    };
+    version = "4.7.0";
+  };
+  factory_girl_rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hzpirb33xdqaz44i1mbcfv0icjrghhgaz747llcfsflljd4pa4r";
+      type = "gem";
+    };
+    version = "4.7.0";
+  };
+  faker = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09amnh5d0m3q2gpb0vr9spbfa8l2nc0kl3s79y6sx7a16hrl4vvc";
+      type = "gem";
+    };
+    version = "1.6.6";
+  };
+  github-markdown = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nax4fyyhz9xmi7q6mmc6d1h8hc0cxda9d7q5z0pba88mj00s9fj";
+      type = "gem";
+    };
+    version = "0.6.9";
+  };
+  globalid = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11plkgyl3w9k4y2scc1igvpgwyz4fnmsr63h2q4j8wkb48nlnhak";
+      type = "gem";
+    };
+    version = "0.3.7";
+  };
+  haml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mrzjgkygvfii66bbylj2j93na8i89998yi01fin3whwqbvx0m1p";
+      type = "gem";
+    };
+    version = "4.0.7";
+  };
+  httparty = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1msa213hclsv14ijh49i1wggf9avhnj2j4xr58m9jx6fixlbggw6";
+      type = "gem";
+    };
+    version = "0.14.0";
+  };
+  i18n = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758";
+      type = "gem";
+    };
+    version = "0.7.0";
+  };
+  jbuilder = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jbh1296imd0arc9nl1m71yfd7kg505p8srr1ijpsqv4hhbz5qci";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  jquery-migrate-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pcfs339wki4ax4imb4qi2xb04bbj6j4xvn8x3yn6yf95frrvch6";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  jquery-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0prqyixv7j2qlq67qdr3miwcyvi27b9a82j51gbpb6vcl0ig2rik";
+      type = "gem";
+    };
+    version = "4.2.1";
+  };
+  jquery-ui-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gfygrv4bjpjd2c377lw7xzk1b77rxjyy3w6wl4bq1gkqvyrkx77";
+      type = "gem";
+    };
+    version = "5.0.5";
+  };
+  json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc";
+      type = "gem";
+    };
+    version = "1.8.3";
+  };
+  launchy = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
+      type = "gem";
+    };
+    version = "2.4.3";
+  };
+  letter_opener = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pcrdbxvp2x5six8fqn8gf09bn9rd3jga76ds205yph5m8fsda21";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  localized_language_select = {
+    source = {
+      fetchSubmodules = false;
+      rev = "85df6b97789de6e29c630808b630e56a1b76f80c";
+      sha256 = "1b2pd8120nrl3s3idpgdzhrjkn9g5sxnkx4j671fjiyhadlr0q5j";
+      type = "git";
+      url = "git://github.com/frab/localized_language_select.git";
+    };
+    version = "0.3.0";
+  };
+  loofah = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "109ps521p0sr3kgc460d58b4pr1z4mqggan2jbsf0aajy9s6xis8";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  mail = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c9vqfy0na9b5096i5i4qvrvhwamjnmajhgqi3kdsdfl8l6agmkp";
+      type = "gem";
+    };
+    version = "2.6.4";
+  };
+  method_source = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
+  mime-types = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m";
+      type = "gem";
+    };
+    version = "3.1";
+  };
+  mime-types-data = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm";
+      type = "gem";
+    };
+    version = "3.2016.0521";
+  };
+  mimemagic = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "101lq4bnjs7ywdcicpw3vbz9amg5gbb4va1626fybd2hawgdx8d9";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  minitest = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0300naf4ilpd9sf0k8si9h9sclkizaschn8bpnri5fqmvm9ybdbq";
+      type = "gem";
+    };
+    version = "5.9.1";
+  };
+  multi_json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wpc23ls6v2xbk3l1qncsbz16npvmw8p0b38l8czdzri18mp51xk";
+      type = "gem";
+    };
+    version = "1.12.1";
+  };
+  multi_xml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i8r7dsz4z79z3j023l8swan7qpbgxbwwz11g38y2vjqjk16v4q8";
+      type = "gem";
+    };
+    version = "0.5.5";
+  };
+  mysql2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v537b7865f4z610rljy8prwmq1yhk3zalp9mcbxn7aqb3g75pra";
+      type = "gem";
+    };
+    version = "0.4.4";
+  };
+  net-scp = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  net-ssh = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11djaq0h3bzzy61dca3l84rrs91702hha4vgg387gviipgz7f3yy";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  nokogiri = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv";
+      type = "gem";
+    };
+    version = "1.6.7.2";
+  };
+  paper_trail = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w3y2h1w0kml2fmzx4sdcrhnbj273npwrs0cx91xdgy2qfjj6hmr";
+      type = "gem";
+    };
+    version = "5.2.2";
+  };
+  paperclip = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r8krh5xg790845wzlc2r7l0jwskw4c4wk9xh4bpprqykwaghg0r";
+      type = "gem";
+    };
+    version = "4.3.7";
+  };
+  pdf-core = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x121sznmhfmjnk0rzpp6djxgi28afpc8avnhn3kzlmpc87r7fyi";
+      type = "gem";
+    };
+    version = "0.1.6";
+  };
+  pg = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bplv27d0f8vwdj51967498pl1cjxq19hhcj4hdjr4h3s72l2z4j";
+      type = "gem";
+    };
+    version = "0.19.0";
+  };
+  pkg-config = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z";
+      type = "gem";
+    };
+    version = "1.1.7";
+  };
+  polyamorous = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1501y9l81b2lwb93fkycq8dr1bi6qcdhia3qv4fddnmrdihkl3pv";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  prawn = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04pxzfmmy8a6bv3zvh1mmyy5zi4bj994kq1v6qnlq2xlhvg4cxjc";
+      type = "gem";
+    };
+    version = "0.15.0";
+  };
+  prawn_rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19m1pv2rsl3rf9rni78l8137dy2sq1r2443biv19wi9nis2pvgdg";
+      type = "gem";
+    };
+    version = "0.0.11";
+  };
+  pry = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05xbzyin63aj2prrv8fbq2d5df2mid93m81hz5bvf2v4hnzs42ar";
+      type = "gem";
+    };
+    version = "0.10.4";
+  };
+  pry-byebug = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pvc94kgxd33p6iz41ghyadq8zfbjhkk07nvz2mbh3yhrc8w7gmw";
+      type = "gem";
+    };
+    version = "3.4.0";
+  };
+  pry-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a2iinvabis2xmv0z7z7jmh7bbkkngxj2qixfdg5m6qj9x8k1kx6";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+  puma = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rmcny3jr1jj01f9fqijwmikj212a5iql7ghifklm77x4a8pp399";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  rack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5";
+      type = "gem";
+    };
+    version = "1.6.4";
+  };
+  rack-test = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h6x5jq24makgv2fq5qqgjlrk74dxfy62jif9blk43llw8ib2q7z";
+      type = "gem";
+    };
+    version = "0.6.3";
+  };
+  rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1avd16ir7qx23dcnz1b3cafq1lja6rq0w222bs658p9n33rbw54l";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  rails-deprecated_sanitizer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qxymchzdxww8bjsxj05kbf86hsmrjx40r41ksj0xsixr2gmhbbj";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  rails-dom-testing = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v8jl6803mbqpxh4hn0szj081q1a3ap0nb8ni0qswi7z4la844v8";
+      type = "gem";
+    };
+    version = "1.0.7";
+  };
+  rails-html-sanitizer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "138fd86kv073zqfx0xifm646w6bgw2lr8snk16lknrrfrss8xnm7";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  rails-observers = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lsw19jzmvipvrfy2z04hi7r29dvkfc43h43vs67x6lsj9rxwwcy";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  railties = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04rz7cn64zzvq7lnhc9zqmaqmqkq84q25v0ym9lcw75j1cj1mrq4";
+      type = "gem";
+    };
+    version = "4.2.7.1";
+  };
+  rake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cnjmbcyhm4hacpjn337mg1pnaw6hj09f74clwgh6znx8wam9xla";
+      type = "gem";
+    };
+    version = "11.3.0";
+  };
+  ransack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cya3wygwjhj8rckckkl387bmva4nyfvqcl0qhp9hk3zv8y6wxjc";
+      type = "gem";
+    };
+    version = "1.8.2";
+  };
+  redcarpet = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04v85p0bnpf1c7w4n0yr03s35yimxh0idgdrrybl9y13zbw5kgvg";
+      type = "gem";
+    };
+    version = "3.3.4";
+  };
+  request_store = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1va9x0b3ww4chcfqlmi8b14db39di1mwa7qrjbh7ma0lhndvs2zv";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  ri_cal = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1flga63anfpfpdwz6lpm3icpdqmvjq757hihfaw63rlkwq4pf390";
+      type = "gem";
+    };
+    version = "0.8.8";
+  };
+  roust = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zdnwxxh34psv0iybcdnk9w4dpgpr07j3w1fvigkpccgz5vs82qk";
+      type = "gem";
+    };
+    version = "1.8.9";
+  };
+  rqrcode = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h1pnnydgs032psakvg3l779w3ghbn08ajhhhw19hpmnfhrs8k0a";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  sass = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dkj6v26fkg1g0majqswwmhxva7cd6p3psrhdlx93qal72dssywy";
+      type = "gem";
+    };
+    version = "3.4.22";
+  };
+  sass-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iji20hb8crncz14piss1b29bfb6l89sz3ai5fny3iw39vnxkdcb";
+      type = "gem";
+    };
+    version = "5.0.6";
+  };
+  shoulda = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy";
+      type = "gem";
+    };
+    version = "3.5.0";
+  };
+  shoulda-context = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  shoulda-matchers = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0";
+      type = "gem";
+    };
+    version = "2.8.0";
+  };
+  simple_form = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ii3rkkbj5cc10f5rdiny18ncdh36kijr25cah0ybbr7kigh3v3b";
+      type = "gem";
+    };
+    version = "3.3.1";
+  };
+  slop = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  sprockets = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jzsfiladswnzbrwqfiaj1xip68y58rwx0lpmj907vvq47k87gj1";
+      type = "gem";
+    };
+    version = "3.7.0";
+  };
+  sprockets-rails = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zr9vk2vn44wcn4265hhnnnsciwlmqzqc6bnx78if1xcssxj6x44";
+      type = "gem";
+    };
+    version = "3.2.0";
+  };
+  sqlite3 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny";
+      type = "gem";
+    };
+    version = "1.3.11";
+  };
+  sshkit = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wpqvr2dyxwp3shwh0221i1ahyg8vd2hyilmjvdi026l00gk2j4l";
+      type = "gem";
+    };
+    version = "1.11.3";
+  };
+  sucker_punch = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l8b53mlzl568kdl4la8kcjjcnawmbl0q6hq9c3kkyippa5c0x55";
+      type = "gem";
+    };
+    version = "2.0.2";
+  };
+  thor = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z";
+      type = "gem";
+    };
+    version = "0.19.1";
+  };
+  thread_safe = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  tilt = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lgk8bfx24959yq1cn55php3321wddw947mgj07bxfnwyipy9hqf";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  transitions = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11byymi45s4pxbhj195277r16dyhxkqc2jwf7snbhan23izzay2c";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  ttfunk = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jvgqhp0i6v9d7davwdn20skgi508yd0xcf1h4p9f5dlslmpnkhj";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  tzinfo = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx";
+      type = "gem";
+    };
+    version = "1.2.2";
+  };
+  uglifier = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f30s1631k03x4wm7xyc79g92pppzvyysa773zsaq2kcry1pmifc";
+      type = "gem";
+    };
+    version = "3.0.2";
+  };
+  uniform_notifier = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jha0l7x602g5rvah960xl9r0f3q25gslj39i0x1vai8i5z6zr1l";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  will_paginate = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xlls78hkkmk33q1rb84rgg2xr39g06a1z1239nq59c825g83k01";
+      type = "gem";
+    };
+    version = "3.1.3";
+  };
+  yard = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gjl0sh7h0a9s67pllagw8192kscljg4y8nddfrqhji4g21yvcas";
+      type = "gem";
+    };
+    version = "0.9.5";
+  };
+}
\ No newline at end of file