summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2016-01-30 14:47:04 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2016-02-26 07:08:31 +0100
commitbcfa59bf822dc696e963d7abccfdff2e58e70525 (patch)
treeb57383fd52e6ac6112f100ca04040c23efa87fa3
parent30891166be9156c65a50c52cd08f3c7a0f5492da (diff)
downloadnixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar.gz
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar.bz2
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar.lz
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar.xz
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.tar.zst
nixpkgs-bcfa59bf822dc696e963d7abccfdff2e58e70525.zip
gitlab: 8.0.5 -> 8.5.0, service improvements
Updates gitlab to the current stable version and fixes a lot of features that
were broken, at least with the current version and our configuration.

Quite a lot of sweat and tears has gone into testing nearly all features and
reading/patching the Gitlab source as we're about to deploy gitlab for our
whole company.

Things to note:

 * The gitlab config is now written as a nix attribute set and will be
   converted to JSON. Gitlab uses YAML but JSON is a subset of YAML.
   The `extraConfig` opition is also an attribute set that will be merged
   with the default config. This way *all* Gitlab options are supported.

 * Some paths like uploads and configs are hardcoded in rails  (at least
   after my study of the Gitlab source). This is why they are linked from
   the Gitlab root to /run/gitlab and then linked to the  configurable
   `statePath`.

 * Backup & restore should work out of the box from another Gitlab instance.

 * gitlab-git-http-server has been replaced by gitlab-workhorse upstream.
   Push & pull over HTTPS works perfectly. Communication to gitlab is done
   over unix sockets. An HTTP server is required to proxy requests to
   gitlab-workhorse over another unix socket at
   `/run/gitlab/gitlab-workhorse.socket`.

 * The user & group running gitlab are now configurable. These can even be
   changed for live instances.

 * The initial email address & password of the root user can be configured.

Fixes #8598.
-rw-r--r--nixos/modules/rename.nix3
-rw-r--r--nixos/modules/services/misc/gitlab.nix365
-rw-r--r--pkgs/applications/version-management/gitlab-git-http-server/default.nix23
-rw-r--r--pkgs/applications/version-management/gitlab-shell/default.nix15
-rw-r--r--pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch13
-rw-r--r--pkgs/applications/version-management/gitlab-workhorse/default.nix26
-rw-r--r--pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch12
-rw-r--r--pkgs/applications/version-management/gitlab/Gemfile187
-rw-r--r--pkgs/applications/version-management/gitlab/Gemfile.lock746
-rw-r--r--pkgs/applications/version-management/gitlab/default.nix34
-rw-r--r--pkgs/applications/version-management/gitlab/gemset.nix3501
-rw-r--r--pkgs/applications/version-management/gitlab/nulladapter.patch29
-rw-r--r--pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch167
-rw-r--r--pkgs/top-level/all-packages.nix6
14 files changed, 2645 insertions, 2482 deletions
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 6d5ee6fc84e..85435884b19 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -28,6 +28,9 @@ with lib;
     (mkRenamedOptionModule [ "services" "subsonic" "host" ] [ "services" "subsonic" "listenAddress" ])
     (mkRenamedOptionModule [ "jobs" ] [ "systemd" "services" ])
 
+    (mkRenamedOptionModule [ "services" "gitlab" "stateDir" ] [ "services" "gitlab" "statePath" ])
+    (mkRemovedOptionModule [ "services" "gitlab" "satelliteDir" ])
+
     # Old Grub-related options.
     (mkRenamedOptionModule [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ])
     (mkRenamedOptionModule [ "boot" "extraKernelParams" ] [ "boot" "kernelParams" ])
diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix
index 949357ab20f..074f1a040b8 100644
--- a/nixos/modules/services/misc/gitlab.nix
+++ b/nixos/modules/services/misc/gitlab.nix
@@ -21,14 +21,15 @@ let
       username: ${cfg.databaseUsername}
       encoding: utf8
   '';
+
   gitlabShellYml = ''
-    user: gitlab
-    gitlab_url: "http://${cfg.host}:${toString cfg.port}/"
+    user: ${cfg.user}
+    gitlab_url: "http://localhost:8080/"
     http_settings:
       self_signed_cert: false
-    repos_path: "${cfg.stateDir}/repositories"
-    secret_file: "${cfg.stateDir}/config/gitlab_shell_secret"
-    log_file: "${cfg.stateDir}/log/gitlab-shell.log"
+    repos_path: "${cfg.statePath}/repositories"
+    secret_file: "${cfg.statePath}/config/gitlab_shell_secret"
+    log_file: "${cfg.statePath}/log/gitlab-shell.log"
     redis:
       bin: ${pkgs.redis}/bin/redis-cli
       host: 127.0.0.1
@@ -37,33 +38,101 @@ let
       namespace: resque:gitlab
   '';
 
+  gitlabConfig = {
+    production = flip recursiveUpdate cfg.extraConfig {
+      gitlab = {
+        host = cfg.host;
+        port = cfg.port;
+        https = cfg.https;
+        user = cfg.user;
+        email_enabled = true;
+        email_display_name = "GitLab";
+        email_reply_to = "noreply@localhost";
+        default_theme = 2;
+        default_projects_features = {
+          issues = true;
+          merge_requests = true;
+          wiki = false;
+          snippets = false;
+          builds = true;
+        };
+      };
+      artifacts = {
+        enabled = true;
+      };
+      lfs = {
+        enabled = true;
+      };
+      gravatar = {
+        enabled = true;
+      };
+      cron_jobs = {
+        stuck_ci_builds_worker = {
+          cron = "0 0 * * *";
+        };
+      };
+      gitlab_ci = {
+        builds_path = "${cfg.statePath}/builds";
+      };
+      ldap = {
+        enabled = false;
+      };
+      omniauth = {
+        enabled = false;
+      };
+      shared = {
+        path = "${cfg.statePath}/shared";
+      };
+      backup = {
+        path = "${cfg.backupPath}";
+      };
+      gitlab_shell = {
+        path = "${pkgs.gitlab-shell}";
+        repos_path = "${cfg.statePath}/repositories";
+        hooks_path = "${cfg.statePath}/shell/hooks";
+        secret_file = "${cfg.statePath}/config/gitlab_shell_secret";
+        upload_pack = true;
+        receive_pack = true;
+      };
+      git = {
+        bin_path = "git";
+        max_size = 20971520; # 20MB
+        timeout = 10;
+      };
+      extra = {};
+    };
+  };
+
+  gitlabEnv = {
+    HOME = "${cfg.statePath}/home";
+    GEM_HOME = gemHome;
+    BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
+    UNICORN_PATH = "${cfg.statePath}/";
+    GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
+    GITLAB_STATE_PATH = "${cfg.statePath}";
+    GITLAB_UPLOADS_PATH = "${cfg.statePath}/uploads";
+    GITLAB_LOG_PATH = "${cfg.statePath}/log";
+    GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
+    GITLAB_SHELL_CONFIG_PATH = "${cfg.statePath}/shell/config.yml";
+    GITLAB_SHELL_SECRET_PATH = "${cfg.statePath}/config/gitlab_shell_secret";
+    GITLAB_SHELL_HOOKS_PATH = "${cfg.statePath}/shell/hooks";
+    RAILS_ENV = "production";
+  };
+
   unicornConfig = builtins.readFile ./defaultUnicornConfig.rb;
 
   gitlab-runner = pkgs.stdenv.mkDerivation rec {
     name = "gitlab-runner";
-    buildInputs = [ pkgs.gitlab pkgs.bundler pkgs.makeWrapper ];
+    buildInputs = with pkgs; [ gitlab bundler makeWrapper ];
     phases = "installPhase fixupPhase";
     buildPhase = "";
     installPhase = ''
       mkdir -p $out/bin
-      makeWrapper ${bundler}/bin/bundle $out/bin/gitlab-runner\
-          --set RAKEOPT '"-f ${pkgs.gitlab}/share/gitlab/Rakefile"'\
-          --set GEM_HOME '${gemHome}'\
-          --set UNICORN_PATH "${cfg.stateDir}/"\
-          --set GITLAB_PATH "${pkgs.gitlab}/share/gitlab/"\
-          --set GITLAB_APPLICATION_LOG_PATH "${cfg.stateDir}/log/application.log"\
-          --set GITLAB_SATELLITES_PATH "${cfg.stateDir}/satellites"\
-          --set GITLAB_SHELL_PATH "${pkgs.gitlab-shell}"\
-          --set GITLAB_REPOSITORIES_PATH "${cfg.stateDir}/repositories"\
-          --set GITLAB_SHELL_HOOKS_PATH "${cfg.stateDir}/shell/hooks"\
-          --set BUNDLE_GEMFILE "${pkgs.gitlab}/share/gitlab/Gemfile"\
-          --set GITLAB_EMAIL_FROM "${cfg.emailFrom}"\
-          --set GITLAB_SHELL_CONFIG_PATH "${cfg.stateDir}/shell/config.yml"\
-          --set GITLAB_SHELL_SECRET_PATH "${cfg.stateDir}/config/gitlab_shell_secret"\
-          --set GITLAB_HOST "${cfg.host}"\
-          --set GITLAB_PORT "${toString cfg.port}"\
-          --set GITLAB_BACKUP_PATH "${cfg.backupPath}"\
-          --set RAILS_ENV "production"
+      makeWrapper ${bundler}/bin/bundle $out/bin/gitlab-runner \
+          ${concatStrings (mapAttrsToList (name: value: "--set ${name} '\"${value}\"' ") gitlabEnv)} \
+          --set GITLAB_CONFIG_PATH '"${cfg.statePath}/config"' \
+          --set PATH '"${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH"' \
+          --set RAKEOPT '"-f ${pkgs.gitlab}/share/gitlab/Rakefile"'
     '';
   };
 
@@ -79,13 +148,7 @@ in {
         '';
       };
 
-      satelliteDir = mkOption {
-        type = types.str;
-        default = "/var/gitlab/git-satellites";
-        description = "Gitlab directory to store checked out git trees requires for operation.";
-      };
-
-      stateDir = mkOption {
+      statePath = mkOption {
         type = types.str;
         default = "/var/gitlab/state";
         description = "Gitlab state directory, logs are stored here.";
@@ -93,7 +156,7 @@ in {
 
       backupPath = mkOption {
         type = types.str;
-        default = cfg.stateDir + "/backup";
+        default = cfg.statePath + "/backup";
         description = "Gitlab path for backups.";
       };
 
@@ -136,7 +199,60 @@ in {
       port = mkOption {
         type = types.int;
         default = 8080;
-        description = "Gitlab server listening port.";
+        description = ''
+          Gitlab server port for copy-paste URLs, e.g. 80 or 443 if you're
+          service over https.
+        '';
+      };
+
+      https = mkOption {
+        type = types.bool;
+        default = false;
+        description = "Whether gitlab prints URLs with https as scheme.";
+      };
+
+      user = mkOption {
+        type = types.str;
+        default = "gitlab";
+        description = "User to run gitlab and all related services.";
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "gitlab";
+        description = "Group to run gitlab and all related services.";
+      };
+
+      initialRootEmail = mkOption {
+        type = types.str;
+        default = "admin@local.host";
+        description = ''
+          Initial email address of the root account if this is a new install.
+        '';
+      };
+
+      initialRootPassword = mkOption {
+        type = types.str;
+        default = "UseNixOS!";
+        description = ''
+          Initial password of the root account if this is a new install.
+        '';
+      };
+
+      extraConfig = mkOption {
+        type = types.attrs;
+        default = "";
+        example = {
+          gitlab = {
+            default_projects_features = {
+              builds = false;
+            };
+          };
+        };
+        description = ''
+          Extra options to be merged into config/gitlab.yml as nix
+          attribute set.
+        '';
       };
     };
   };
@@ -159,39 +275,24 @@ in {
     services.postfix.enable = mkDefault true;
 
     users.extraUsers = [
-      { name = "gitlab";
-        group = "gitlab";
-        home = "${cfg.stateDir}/home";
+      { name = cfg.user;
+        group = cfg.group;
+        home = "${cfg.statePath}/home";
         shell = "${pkgs.bash}/bin/bash";
         uid = config.ids.uids.gitlab;
-      } ];
+      }
+    ];
 
     users.extraGroups = [
-      { name = "gitlab";
+      { name = cfg.group;
         gid = config.ids.gids.gitlab;
-      } ];
+      }
+    ];
 
     systemd.services.gitlab-sidekiq = {
       after = [ "network.target" "redis.service" ];
       wantedBy = [ "multi-user.target" ];
-      environment.HOME = "${cfg.stateDir}/home";
-      environment.GEM_HOME = gemHome;
-      environment.UNICORN_PATH = "${cfg.stateDir}/";
-      environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
-      environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
-      environment.GITLAB_SATELLITES_PATH = "${cfg.stateDir}/satellites";
-      environment.GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
-      environment.GITLAB_REPOSITORIES_PATH = "${cfg.stateDir}/repositories";
-      environment.GITLAB_SHELL_HOOKS_PATH = "${cfg.stateDir}/shell/hooks";
-      environment.BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
-      environment.GITLAB_EMAIL_FROM = "${cfg.emailFrom}";
-      environment.GITLAB_SHELL_CONFIG_PATH = "${cfg.stateDir}/shell/config.yml";
-      environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
-      environment.GITLAB_HOST = "${cfg.host}";
-      environment.GITLAB_PORT = "${toString cfg.port}";
-      environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
-      environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
-      environment.RAILS_ENV = "production";
+      environment = gitlabEnv;
       path = with pkgs; [
         config.services.postgresql.package
         gitAndTools.git
@@ -201,116 +302,132 @@ in {
       ];
       serviceConfig = {
         Type = "simple";
-        User = "gitlab";
-        Group = "gitlab";
+        User = cfg.user;
+        Group = cfg.group;
         TimeoutSec = "300";
         WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
-        ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.stateDir}/tmp/sidekiq.pid\"";
+        ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\"";
       };
     };
 
-    systemd.services.gitlab-git-http-server = {
+    systemd.services.gitlab-workhorse = {
       after = [ "network.target" "gitlab.service" ];
       wantedBy = [ "multi-user.target" ];
-      environment.HOME = "${cfg.stateDir}/home";
+      environment.HOME = gitlabEnv.HOME;
+      environment.GITLAB_SHELL_CONFIG_PATH = gitlabEnv.GITLAB_SHELL_CONFIG_PATH;
       path = with pkgs; [
         gitAndTools.git
         openssh
       ];
+      preStart = ''
+        mkdir -p /run/gitlab
+        chown ${cfg.user}:${cfg.group} /run/gitlab
+      '';
       serviceConfig = {
+        PermissionsStartOnly = true; # preStart must be run as root
         Type = "simple";
-        User = "gitlab";
-        Group = "gitlab";
+        User = cfg.user;
+        Group = cfg.group;
         TimeoutSec = "300";
-        ExecStart = "${pkgs.gitlab-git-http-server}/bin/gitlab-git-http-server -listenUmask 0 -listenNetwork unix -listenAddr ${cfg.stateDir}/tmp/sockets/gitlab-git-http-server.socket -authBackend http://localhost:8080 ${cfg.stateDir}/repositories";
+        ExecStart =
+          "${pkgs.gitlab-workhorse}/bin/gitlab-workhorse "
+          + "-listenUmask 0 "
+          + "-listenNetwork unix "
+          + "-listenAddr /run/gitlab/gitlab-workhorse.socket "
+          + "-authSocket ${cfg.statePath}/tmp/sockets/gitlab.socket "
+          + "-documentRoot ${pkgs.gitlab}/share/gitlab/public";
       };
     };
 
     systemd.services.gitlab = {
       after = [ "network.target" "postgresql.service" "redis.service" ];
       wantedBy = [ "multi-user.target" ];
-      environment.HOME = "${cfg.stateDir}/home";
-      environment.GEM_HOME = gemHome;
-      environment.UNICORN_PATH = "${cfg.stateDir}/";
-      environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
-      environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
-      environment.GITLAB_SATELLITES_PATH = "${cfg.stateDir}/satellites";
-      environment.GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
-      environment.GITLAB_SHELL_CONFIG_PATH = "${cfg.stateDir}/shell/config.yml";
-      environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
-      environment.GITLAB_REPOSITORIES_PATH = "${cfg.stateDir}/repositories";
-      environment.GITLAB_SHELL_HOOKS_PATH = "${cfg.stateDir}/shell/hooks";
-      environment.BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
-      environment.GITLAB_EMAIL_FROM = "${cfg.emailFrom}";
-      environment.GITLAB_HOST = "${cfg.host}";
-      environment.GITLAB_PORT = "${toString cfg.port}";
-      environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
-      environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
-      environment.RAILS_ENV = "production";
+      environment = gitlabEnv;
       path = with pkgs; [
         config.services.postgresql.package
         gitAndTools.git
-        ruby
         openssh
         nodejs
+        sudo
       ];
       preStart = ''
-        # TODO: use env vars
-        mkdir -p ${cfg.stateDir}
-        mkdir -p ${cfg.stateDir}/log
-        mkdir -p ${cfg.stateDir}/satellites
-        mkdir -p ${cfg.stateDir}/repositories
-        mkdir -p ${cfg.stateDir}/shell/hooks
-        mkdir -p ${cfg.stateDir}/tmp/pids
-        mkdir -p ${cfg.stateDir}/tmp/sockets
-        rm -rf ${cfg.stateDir}/config
-        mkdir -p ${cfg.stateDir}/config
-        # TODO: What exactly is gitlab-shell doing with the secret?
-        tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c 20 > ${cfg.stateDir}/config/gitlab_shell_secret
-        mkdir -p ${cfg.stateDir}/home/.ssh
-        touch ${cfg.stateDir}/home/.ssh/authorized_keys
+        mkdir -p ${cfg.backupPath}
+        mkdir -p ${cfg.statePath}/builds
+        mkdir -p ${cfg.statePath}/repositories
+        mkdir -p ${gitlabConfig.production.shared.path}/artifacts
+        mkdir -p ${gitlabConfig.production.shared.path}/lfs-objects
+        mkdir -p ${cfg.statePath}/log
+        mkdir -p ${cfg.statePath}/shell
+        mkdir -p ${cfg.statePath}/tmp/pids
+        mkdir -p ${cfg.statePath}/tmp/sockets
+
+        rm -rf ${cfg.statePath}/config ${cfg.statePath}/shell/hooks
+        mkdir -p ${cfg.statePath}/config ${cfg.statePath}/shell
 
-        cp -rf ${pkgs.gitlab}/share/gitlab/config ${cfg.stateDir}/
-        cp ${pkgs.gitlab}/share/gitlab/VERSION ${cfg.stateDir}/VERSION
-
-        ln -fs ${pkgs.writeText "database.yml" databaseYml} ${cfg.stateDir}/config/database.yml
-        ln -fs ${pkgs.writeText "unicorn.rb" unicornConfig} ${cfg.stateDir}/config/unicorn.rb
-
-        chown -R gitlab:gitlab ${cfg.stateDir}/
-        chmod -R 755 ${cfg.stateDir}/
+        # TODO: What exactly is gitlab-shell doing with the secret?
+        tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c 20 > ${cfg.statePath}/config/gitlab_shell_secret
+
+        # The uploads directory is hardcoded somewhere deep in rails. It is
+        # symlinked in the gitlab package to /run/gitlab/uploads to make it
+        # configurable
+        mkdir -p /run/gitlab
+        mkdir -p ${cfg.statePath}/uploads
+        ln -sf ${cfg.statePath}/uploads /run/gitlab/uploads
+        chown -R ${cfg.user}:${cfg.group} /run/gitlab
+
+        # Prepare home directory
+        mkdir -p ${gitlabEnv.HOME}/.ssh
+        touch ${gitlabEnv.HOME}/.ssh/authorized_keys
+        chown -R ${cfg.user}:${cfg.group} ${gitlabEnv.HOME}/
+        chmod -R u+rwX,go-rwx+X ${gitlabEnv.HOME}/
+
+        cp -rf ${pkgs.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config
+        ln -sf ${cfg.statePath}/config /run/gitlab/config
+        cp ${pkgs.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION
+
+        # JSON is a subset of YAML
+        ln -fs ${pkgs.writeText "gitlab.yml" (builtins.toJSON gitlabConfig)} ${cfg.statePath}/config/gitlab.yml
+        ln -fs ${pkgs.writeText "database.yml" databaseYml} ${cfg.statePath}/config/database.yml
+        ln -fs ${pkgs.writeText "unicorn.rb" unicornConfig} ${cfg.statePath}/config/unicorn.rb
+
+        chown -R ${cfg.user}:${cfg.group} ${cfg.statePath}/
+        chmod -R ug+rwX,o-rwx+X ${cfg.statePath}/
+
+        # Install the shell required to push repositories
+        ln -fs ${pkgs.writeText "config.yml" gitlabShellYml} "$GITLAB_SHELL_CONFIG_PATH"
+        ln -fs ${pkgs.gitlab-shell}/hooks "$GITLAB_SHELL_HOOKS_PATH"
+        ${pkgs.gitlab-shell}/bin/install
 
         if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then
-          if ! test -e "${cfg.stateDir}/db-created"; then
-            psql postgres -c "CREATE ROLE gitlab WITH LOGIN NOCREATEDB NOCREATEROLE NOCREATEUSER ENCRYPTED PASSWORD '${cfg.databasePassword}'"
+          if ! test -e "${cfg.statePath}/db-created"; then
+            psql postgres -c "CREATE ROLE gitlab WITH LOGIN CREATEDB NOCREATEROLE NOCREATEUSER ENCRYPTED PASSWORD '${cfg.databasePassword}'"
             ${config.services.postgresql.package}/bin/createdb --owner gitlab gitlab || true
-            touch "${cfg.stateDir}/db-created"
+            touch "${cfg.statePath}/db-created"
 
-            # force=yes disables the manual-interaction yes/no prompt
-            # which breaks without an stdin.
-            force=yes ${bundler}/bin/bundle exec rake -f ${pkgs.gitlab}/share/gitlab/Rakefile gitlab:setup RAILS_ENV=production
+            # The gitlab:setup task is horribly broken somehow, these two tasks will do the same for setting up the initial database
+            ${gitlab-runner}/bin/gitlab-runner exec rake db:migrate RAILS_ENV=production
+            ${gitlab-runner}/bin/gitlab-runner exec rake db:seed_fu RAILS_ENV=production \
+              GITLAB_ROOT_PASSWORD="${cfg.initialRootPassword}" GITLAB_ROOT_EMAIL="${cfg.initialRootEmail}";
           fi
         fi
 
-      ${bundler}/bin/bundle exec rake -f ${pkgs.gitlab}/share/gitlab/Rakefile db:migrate RAILS_ENV=production
-      # Install the shell required to push repositories
-      ln -fs ${pkgs.writeText "config.yml" gitlabShellYml} ${cfg.stateDir}/shell/config.yml
-      export GITLAB_SHELL_CONFIG_PATH=""${cfg.stateDir}/shell/config.yml
-      ${pkgs.gitlab-shell}/bin/install
+        # Always do the db migrations just to be sure the database is up-to-date
+        ${gitlab-runner}/bin/gitlab-runner exec rake db:migrate RAILS_ENV=production
 
-      # Change permissions in the last step because some of the
-      # intermediary scripts like to create directories as root.
-      chown -R gitlab:gitlab ${cfg.stateDir}/
-      chmod -R 755 ${cfg.stateDir}/
+        # Change permissions in the last step because some of the
+        # intermediary scripts like to create directories as root.
+        chown -R ${cfg.user}:${cfg.group} ${cfg.statePath}
+        chmod -R u+rwX,go-rwx+X ${cfg.statePath}
       '';
 
       serviceConfig = {
         PermissionsStartOnly = true; # preStart must be run as root
         Type = "simple";
-        User = "gitlab";
-        Group = "gitlab";
+        User = cfg.user;
+        Group = cfg.group;
         TimeoutSec = "300";
         WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
-        ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.stateDir}/config/unicorn.rb -E production\"";
+        ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.statePath}/config/unicorn.rb -E production\"";
       };
 
     };
diff --git a/pkgs/applications/version-management/gitlab-git-http-server/default.nix b/pkgs/applications/version-management/gitlab-git-http-server/default.nix
deleted file mode 100644
index 98b14d2ce86..00000000000
--- a/pkgs/applications/version-management/gitlab-git-http-server/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ stdenv, fetchgit, git, go }:
-
-stdenv.mkDerivation rec {
-  version = "0.2.14";
-  name = "gitlab-git-http-server-${version}";
-
-  srcs = fetchgit {
-    url = "https://gitlab.com/gitlab-org/gitlab-git-http-server.git";
-    rev = "7c63f08f7051348e56b903fc0bbefcfed398fc1c";
-    sha256 = "557d63a90c61371598b971a06bc056993610b58c2ef5762d9ef145ec2fdada78";
-  };
-
-  buildInputs = [ git go ];
-
-  buildPhase = ''
-    make PREFIX=$out
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    make install PREFIX=$out
-  '';
-}
diff --git a/pkgs/applications/version-management/gitlab-shell/default.nix b/pkgs/applications/version-management/gitlab-shell/default.nix
index 5ee59c1e255..c2e746630da 100644
--- a/pkgs/applications/version-management/gitlab-shell/default.nix
+++ b/pkgs/applications/version-management/gitlab-shell/default.nix
@@ -1,19 +1,22 @@
-{ stdenv, ruby, bundler, fetchgit }:
+{ stdenv, ruby, bundler, fetchFromGitLab }:
 
 stdenv.mkDerivation rec {
-  version = "2.1.0";
+  version = "2.6.10";
   name = "gitlab-shell-${version}";
 
-  srcs = fetchgit {
-    url = "https://gitlab.com/gitlab-org/gitlab-shell.git";
-    rev = "ebbb9d80811c23d49a7d1b75d7a7d2b8ffe7437b";
-    sha256 = "fe69ab85d75a3871b4afa11ebc17f43008d135bbdbd6c581f6bebee2a4a3c75d";
+  srcs = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitlab-shell";
+    rev = "v${version}";
+    sha256 = "1f1ma49xpkan2iksnw9amzjdw6i0bxnzdbsk0329m7if4987vcqd";
   };
 
   buildInputs = [
     ruby bundler
   ];
 
+  patches = [ ./remove-hardcoded-locations.patch ];
+
   installPhase = ''
     mkdir -p $out/
     cp -R . $out/
diff --git a/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch
new file mode 100644
index 00000000000..e1c924cdeef
--- /dev/null
+++ b/pkgs/applications/version-management/gitlab-shell/remove-hardcoded-locations.patch
@@ -0,0 +1,13 @@
+diff --git a/lib/gitlab_projects.rb b/lib/gitlab_projects.rb
+index c1d175a..7f7fd2f 100644
+--- a/lib/gitlab_projects.rb
++++ b/lib/gitlab_projects.rb
+@@ -5,7 +5,7 @@ require_relative 'gitlab_config'
+ require_relative 'gitlab_logger'
+ 
+ class GitlabProjects
+-  GLOBAL_HOOKS_DIRECTORY = File.join(ROOT_PATH, 'hooks')
++  GLOBAL_HOOKS_DIRECTORY = ENV['GITLAB_SHELL_HOOKS_PATH'] || File.join(ROOT_PATH, 'hooks')
+ 
+   # Project name is a directory name for repository with .git at the end
+   # It may be namespaced or not. Like repo.git or gitlab/repo.git
diff --git a/pkgs/applications/version-management/gitlab-workhorse/default.nix b/pkgs/applications/version-management/gitlab-workhorse/default.nix
new file mode 100644
index 00000000000..06c05d9f3b3
--- /dev/null
+++ b/pkgs/applications/version-management/gitlab-workhorse/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitLab, git, go }:
+
+stdenv.mkDerivation rec {
+  version = "0.6.4";
+  name = "gitlab-workhorse-${version}";
+
+  srcs = fetchFromGitLab {
+    owner = "gitlab-org";
+    repo = "gitlab-workhorse";
+    rev = version;
+    sha256 = "09bs3kdmqi6avdak2nqma141y4fhfv050zwqqx7qh9a9hgkgwjxw";
+  };
+
+  buildInputs = [ git go ];
+
+  patches = [ ./remove-hardcoded-paths.patch ];
+
+  buildPhase = ''
+    make PREFIX=$out
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    make install PREFIX=$out
+  '';
+}
diff --git a/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch b/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch
new file mode 100644
index 00000000000..37f3d2deef5
--- /dev/null
+++ b/pkgs/applications/version-management/gitlab-workhorse/remove-hardcoded-paths.patch
@@ -0,0 +1,12 @@
+diff --git a/internal/git/command.go b/internal/git/command.go
+index 0e5496c..5778294 100644
+--- a/internal/git/command.go
++++ b/internal/git/command.go
+@@ -16,6 +16,7 @@ func gitCommand(gl_id string, name string, args ...string) *exec.Cmd {
+ 	cmd.Env = []string{
+ 		fmt.Sprintf("HOME=%s", os.Getenv("HOME")),
+ 		fmt.Sprintf("PATH=%s", os.Getenv("PATH")),
++		fmt.Sprintf("GITLAB_SHELL_CONFIG_PATH=%s", os.Getenv("GITLAB_SHELL_CONFIG_PATH")),
+ 		fmt.Sprintf("LD_LIBRARY_PATH=%s", os.Getenv("LD_LIBRARY_PATH")),
+ 		fmt.Sprintf("GL_ID=%s", gl_id),
+ 	}
diff --git a/pkgs/applications/version-management/gitlab/Gemfile b/pkgs/applications/version-management/gitlab/Gemfile
index 66261426c01..ec40f246394 100644
--- a/pkgs/applications/version-management/gitlab/Gemfile
+++ b/pkgs/applications/version-management/gitlab/Gemfile
@@ -1,14 +1,10 @@
 source "https://rubygems.org"
 
-def darwin_only(require_as)
-  RUBY_PLATFORM.include?('darwin') && require_as
-end
-
-def linux_only(require_as)
-  RUBY_PLATFORM.include?('linux') && require_as
-end
+gem 'rails', '4.2.5.1'
+gem 'rails-deprecated_sanitizer', '~> 1.0.3'
 
-gem 'rails', '4.1.12'
+# Responders respond_to and respond_with
+gem 'responders', '~> 2.0'
 
 # Specify a sprockets version due to security issue
 # See https://groups.google.com/forum/#!topic/rubyonrails-security/doAVp0YaTqY
@@ -22,20 +18,27 @@ gem "mysql2", '~> 0.3.16', group: :mysql
 gem "pg", '~> 0.18.2', group: :postgres
 
 # Authentication libraries
-gem "devise", '~> 3.5.2'
-gem "devise-async", '~> 0.9.0'
-gem 'omniauth', "~> 1.2.2"
-gem 'omniauth-google-oauth2', '~> 0.2.5'
-gem 'omniauth-twitter', '~> 1.0.1'
-gem 'omniauth-github', '~> 1.1.1'
-gem 'omniauth-shibboleth', '~> 1.1.1'
-gem 'omniauth-kerberos', '~> 0.2.0', group: :kerberos
-gem 'omniauth-gitlab', '~> 1.0.0'
-gem 'omniauth-bitbucket', '~> 0.0.2'
-gem 'omniauth-saml', '~> 1.4.0'
-gem 'doorkeeper', '~> 2.1.3'
-gem 'omniauth_crowd'
-gem "rack-oauth2", "~> 1.0.5"
+gem 'devise',                 '~> 3.5.4'
+gem 'devise-async',           '~> 0.9.0'
+gem 'doorkeeper',             '~> 2.2.0'
+gem 'omniauth',               '~> 1.3.1'
+gem 'omniauth-azure-oauth2',  '~> 0.0.6'
+gem 'omniauth-bitbucket',     '~> 0.0.2'
+gem 'omniauth-cas3',          '~> 1.1.2'
+gem 'omniauth-facebook',      '~> 3.0.0'
+gem 'omniauth-github',        '~> 1.1.1'
+gem 'omniauth-gitlab',        '~> 1.0.0'
+gem 'omniauth-google-oauth2', '~> 0.2.0'
+gem 'omniauth-kerberos',      '~> 0.3.0', group: :kerberos
+gem 'omniauth-saml',          '~> 1.4.2'
+gem 'omniauth-shibboleth',    '~> 1.2.0'
+gem 'omniauth-twitter',       '~> 1.2.0'
+gem 'omniauth_crowd',         '~> 2.2.0'
+gem 'rack-oauth2',            '~> 1.2.1'
+
+# Spam and anti-bot protection
+gem 'recaptcha', require: 'recaptcha/rails'
+gem 'akismet', '~> 2.0'
 
 # Two-factor authentication
 gem 'devise-two-factor', '~> 2.0.0'
@@ -47,7 +50,7 @@ gem "browser", '~> 1.0.0'
 
 # Extracting information from a git repository
 # Provide access to Gitlab::Git library
-gem "gitlab_git", '~> 7.2.15'
+gem "gitlab_git", '~> 8.2'
 
 # LDAP Auth
 # GitLab fork with several improvements to original library. For full list of changes
@@ -55,32 +58,21 @@ gem "gitlab_git", '~> 7.2.15'
 gem 'gitlab_omniauth-ldap', '~> 1.2.1', require: "omniauth-ldap"
 
 # Git Wiki
-gem 'gollum-lib', '~> 4.0.2'
+gem 'gollum-lib', '~> 4.1.0'
 
 # Language detection
-# GitLab fork of linguist does not require pygments/python dependency.
-# New version of original gem also dropped pygments support but it has strict
-# dependency to unstable rugged version. We have internal issue for replacing
-# fork with original gem when we meet on same rugged version - https://dev.gitlab.org/gitlab/gitlabhq/issues/2052.
-gem "gitlab-linguist", "~> 3.0.1", require: "linguist"
+gem "github-linguist", "~> 4.7.0", require: "linguist"
 
 # API
-gem "grape", "~> 0.6.1"
-gem "grape-entity", "~> 0.4.2"
-gem 'rack-cors', '~> 0.2.9', require: 'rack/cors'
-
-# Format dates and times
-# based on human-friendly examples
-gem "stamp", '~> 0.5.0'
-
-# Enumeration fields
-gem 'enumerize', '~> 0.7.0'
+gem 'grape',        '~> 0.13.0'
+gem 'grape-entity', '~> 0.4.2'
+gem 'rack-cors',    '~> 0.4.0', require: 'rack/cors'
 
 # Pagination
-gem "kaminari", "~> 0.15.1"
+gem "kaminari", "~> 0.16.3"
 
 # HAML
-gem "haml-rails", '~> 0.5.3'
+gem "haml-rails", '~> 0.9.0'
 
 # Files attachments
 gem "carrierwave", '~> 0.9.0'
@@ -89,7 +81,7 @@ gem "carrierwave", '~> 0.9.0'
 gem 'dropzonejs-rails', '~> 0.7.1'
 
 # for aws storage
-gem "fog", "~> 1.25.0"
+gem "fog", "~> 1.36.0"
 gem "unf", '~> 0.1.4'
 
 # Authorization
@@ -102,13 +94,18 @@ gem "seed-fu", '~> 2.3.5'
 gem 'html-pipeline', '~> 1.11.0'
 gem 'task_list',     '~> 1.0.2', require: 'task_list/railtie'
 gem 'github-markup', '~> 1.3.1'
-gem 'redcarpet',     '~> 3.3.2'
+gem 'redcarpet',     '~> 3.3.3'
 gem 'RedCloth',      '~> 4.2.9'
 gem 'rdoc',          '~>3.6'
 gem 'org-ruby',      '~> 0.9.12'
-gem 'creole',        '~>0.3.6'
+gem 'creole',        '~> 0.5.0'
 gem 'wikicloth',     '0.8.1'
 gem 'asciidoctor',   '~> 1.5.2'
+gem 'rouge',         '~> 1.10.1'
+
+# See https://groups.google.com/forum/#!topic/ruby-security-ann/aSbgDiwb24s
+# and https://groups.google.com/forum/#!topic/ruby-security-ann/Dy7YiKb_pMM
+gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2'
 
 # Diffs
 gem 'diffy', '~> 3.0.3'
@@ -120,7 +117,7 @@ group :unicorn do
 end
 
 # State machine
-gem "state_machine", '~> 1.2.0'
+gem "state_machines-activerecord", '~> 0.3.0'
 # Run events after state machine commits
 gem 'after_commit_queue'
 
@@ -128,17 +125,16 @@ gem 'after_commit_queue'
 gem 'acts-as-taggable-on', '~> 3.4'
 
 # Background jobs
-gem 'slim', '~> 2.0.2'
 gem 'sinatra', '~> 1.4.4', require: nil
-gem 'sidekiq', '3.3.0'
-gem 'sidetiq', '~> 0.6.3'
+gem 'sidekiq', '~> 4.0'
+gem 'sidekiq-cron', '~> 0.4.0'
+gem 'redis-namespace'
 
 # HTTP requests
 gem "httparty", '~> 0.13.3'
 
 # Colored output to console
-gem "colored", '~> 1.2'
-gem "colorize", '~> 0.5.8'
+gem "colorize", '~> 0.7.0'
 
 # GitLab settings
 gem 'settingslogic', '~> 2.0.9'
@@ -151,7 +147,7 @@ gem 'version_sorter', '~> 2.0.0'
 gem "redis-rails", '~> 4.0.0'
 
 # Campfire integration
-gem 'tinder', '~> 1.9.2'
+gem 'tinder', '~> 1.10.0'
 
 # HipChat integration
 gem 'hipchat', '~> 1.5.0'
@@ -163,28 +159,32 @@ gem "gitlab-flowdock-git-hook", "~> 1.0.1"
 gem "gemnasium-gitlab-service", "~> 0.2"
 
 # Slack integration
-gem "slack-notifier", "~> 1.0.0"
+gem "slack-notifier", "~> 1.2.0"
 
 # Asana integration
-gem 'asana', '~> 0.0.6'
+gem 'asana', '~> 0.4.0'
 
 # FogBugz integration
 gem 'ruby-fogbugz', '~> 0.2.1'
 
 # d3
-gem 'd3_rails', '~> 3.5.5'
+gem 'd3_rails', '~> 3.5.0'
 
 #cal-heatmap
-gem "cal-heatmap-rails", "~> 0.0.1"
+gem 'cal-heatmap-rails', '~> 3.5.0'
 
 # underscore-rails
-gem "underscore-rails", "~> 1.4.4"
+gem "underscore-rails", "~> 1.8.0"
 
 # Sanitize user input
 gem "sanitize", '~> 2.0'
+gem 'babosa', '~> 1.0.2'
+
+# Sanitizes SVG input
+gem "loofah", "~> 2.0.3"
 
 # Protect against bruteforcing
-gem "rack-attack", '~> 4.3.0'
+gem "rack-attack", '~> 4.3.1'
 
 # Ace editor
 gem 'ace-rails-ap', '~> 2.0.1'
@@ -193,38 +193,52 @@ gem 'ace-rails-ap', '~> 2.0.1'
 gem 'mousetrap-rails', '~> 1.4.6'
 
 # Detect and convert string character encoding
-gem 'charlock_holmes', '~> 0.6.9.4'
+gem 'charlock_holmes', '~> 0.7.3'
 
-gem "sass-rails", '~> 4.0.5'
+gem "sass-rails", '~> 5.0.0'
 gem "coffee-rails", '~> 4.1.0'
-gem "uglifier", '~> 2.3.2'
+gem "uglifier", '~> 2.7.2'
 gem 'turbolinks', '~> 2.5.0'
-gem 'jquery-turbolinks', '~> 2.0.1'
+gem 'jquery-turbolinks', '~> 2.1.0'
 
 gem 'addressable',        '~> 2.3.8'
-gem 'bootstrap-sass',     '~> 3.0'
+gem 'bootstrap-sass',     '~> 3.3.0'
 gem 'font-awesome-rails', '~> 4.2'
-gem 'gitlab_emoji',       '~> 0.1'
-gem 'gon',                '~> 5.0.0'
-gem 'jquery-atwho-rails', '~> 1.0.0'
-gem 'jquery-rails',       '~> 3.1.3'
+gem 'gitlab_emoji',       '~> 0.3.0'
+gem 'gon',                '~> 6.0.1'
+gem 'jquery-atwho-rails', '~> 1.3.2'
+gem 'jquery-rails',       '~> 4.0.0'
 gem 'jquery-scrollto-rails', '~> 1.4.3'
-gem 'jquery-ui-rails',    '~> 4.2.1'
-gem 'nprogress-rails',    '~> 0.1.2.3'
+gem 'jquery-ui-rails',    '~> 5.0.0'
+gem 'nprogress-rails',    '~> 0.1.6.7'
 gem 'raphael-rails',      '~> 2.1.2'
 gem 'request_store',      '~> 1.2.0'
 gem 'select2-rails',      '~> 3.5.9'
 gem 'virtus',             '~> 1.0.1'
+gem 'net-ssh',            '~> 3.0.1'
+
+# Sentry integration
+gem 'sentry-raven'
+
+# Metrics
+group :metrics do
+  gem 'allocations', '~> 1.0', require: false, platform: :mri
+  gem 'method_source', '~> 0.8', require: false
+  gem 'influxdb', '~> 0.2', require: false
+  gem 'connection_pool', '~> 2.0', require: false
+end
 
 group :development do
   gem "foreman"
-  gem 'brakeman', '3.0.1', require: false
+  gem 'brakeman', '~> 3.1.0', require: false
 
   gem "annotate", "~> 2.6.0"
   gem "letter_opener", '~> 1.1.2'
   gem 'quiet_assets', '~> 1.0.2'
-  gem 'rack-mini-profiler', '~> 0.9.0', require: false
-  gem 'rerun', '~> 0.10.0'
+  gem 'rerun', '~> 0.11.0'
+  gem 'bullet', require: false
+  gem 'rblineprof', platform: :mri, require: false
+  gem 'web-console', '~> 2.0'
 
   # Better errors handler
   gem 'better_errors', '~> 1.0.1'
@@ -241,7 +255,7 @@ group :development, :test do
   gem 'byebug', platform: :mri
   gem 'pry-rails'
 
-  gem 'awesome_print', '~> 1.2.0'
+  gem 'awesome_print', '~> 1.2.0', require: false
   gem 'fuubar', '~> 2.0.0'
 
   gem 'database_cleaner', '~> 1.4.0'
@@ -257,7 +271,7 @@ group :development, :test do
 
   gem 'capybara',            '~> 2.4.0'
   gem 'capybara-screenshot', '~> 1.0.0'
-  gem 'poltergeist',         '~> 1.6.0'
+  gem 'poltergeist',         '~> 1.8.1'
 
   gem 'teaspoon', '~> 1.0.0'
   gem 'teaspoon-jasmine', '~> 2.2.0'
@@ -267,16 +281,21 @@ group :development, :test do
   gem 'spring-commands-spinach',  '~> 1.0.0'
   gem 'spring-commands-teaspoon', '~> 0.0.2'
 
-  gem 'rubocop',  '~> 0.28.0',  require: false
+  gem 'rubocop', '~> 0.35.0', require: false
   gem 'coveralls',  '~> 0.8.2', require: false
   gem 'simplecov', '~> 0.10.0', require: false
+  gem 'flog', require: false
+  gem 'flay', require: false
+  gem 'bundler-audit', require: false
+
+  gem 'benchmark-ips', require: false
 end
 
 group :test do
   gem 'shoulda-matchers', '~> 2.8.0', require: false
   gem 'email_spec', '~> 1.6.0'
   gem 'webmock', '~> 1.21.0'
-  gem 'test_after_commit', '~> 0.2.2'
+  gem 'test_after_commit', '~> 0.4.2'
   gem 'sham_rack'
 end
 
@@ -284,12 +303,9 @@ group :production do
   gem "gitlab_meta", '7.0'
 end
 
-gem "newrelic_rpm", '~> 3.9.4.245'
-gem 'newrelic-grape'
-
-gem 'octokit', '~> 3.7.0'
+gem 'octokit', '~> 3.8.0'
 
-gem "mail_room", "~> 0.5.2"
+gem "mail_room", "~> 0.6.1"
 
 gem 'email_reply_parser', '~> 0.5.8'
 
@@ -298,19 +314,10 @@ gem 'activerecord-deprecated_finders', '~> 1.0.3'
 gem 'activerecord-session_store', '~> 0.1.0'
 gem "nested_form", '~> 0.3.2'
 
-# Scheduled
-gem 'whenever', '~> 0.8.4', require: false
-
 # OAuth
 gem 'oauth2', '~> 1.0.0'
 
 # Soft deletion
 gem "paranoia", "~> 2.0"
 
-group :development, :test do
-  gem 'guard-rspec', '~> 4.2.0'
-
-  gem 'rb-fsevent', require: darwin_only('rb-fsevent')
-  gem 'growl',      require: darwin_only('growl')
-  gem 'rb-inotify', require: linux_only('rb-inotify')
-end
+gem "activerecord-nulldb-adapter"
diff --git a/pkgs/applications/version-management/gitlab/Gemfile.lock b/pkgs/applications/version-management/gitlab/Gemfile.lock
index 56db3f61985..ff16e6284fa 100644
--- a/pkgs/applications/version-management/gitlab/Gemfile.lock
+++ b/pkgs/applications/version-management/gitlab/Gemfile.lock
@@ -1,63 +1,75 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    CFPropertyList (2.3.1)
+    CFPropertyList (2.3.2)
     RedCloth (4.2.9)
     ace-rails-ap (2.0.1)
-    actionmailer (4.1.12)
-      actionpack (= 4.1.12)
-      actionview (= 4.1.12)
+    actionmailer (4.2.5.1)
+      actionpack (= 4.2.5.1)
+      actionview (= 4.2.5.1)
+      activejob (= 4.2.5.1)
       mail (~> 2.5, >= 2.5.4)
-    actionpack (4.1.12)
-      actionview (= 4.1.12)
-      activesupport (= 4.1.12)
-      rack (~> 1.5.2)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+    actionpack (4.2.5.1)
+      actionview (= 4.2.5.1)
+      activesupport (= 4.2.5.1)
+      rack (~> 1.6)
       rack-test (~> 0.6.2)
-    actionview (4.1.12)
-      activesupport (= 4.1.12)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    actionview (4.2.5.1)
+      activesupport (= 4.2.5.1)
       builder (~> 3.1)
       erubis (~> 2.7.0)
-    activemodel (4.1.12)
-      activesupport (= 4.1.12)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.2)
+    activejob (4.2.5.1)
+      activesupport (= 4.2.5.1)
+      globalid (>= 0.3.0)
+    activemodel (4.2.5.1)
+      activesupport (= 4.2.5.1)
       builder (~> 3.1)
-    activerecord (4.1.12)
-      activemodel (= 4.1.12)
-      activesupport (= 4.1.12)
-      arel (~> 5.0.0)
+    activerecord (4.2.5.1)
+      activemodel (= 4.2.5.1)
+      activesupport (= 4.2.5.1)
+      arel (~> 6.0)
     activerecord-deprecated_finders (1.0.4)
-    activerecord-session_store (0.1.1)
+    activerecord-nulldb-adapter (0.3.2)
+      activerecord (>= 2.0.0)
+    activerecord-session_store (0.1.2)
       actionpack (>= 4.0.0, < 5)
       activerecord (>= 4.0.0, < 5)
       railties (>= 4.0.0, < 5)
-    activeresource (4.0.0)
-      activemodel (~> 4.0)
-      activesupport (~> 4.0)
-      rails-observers (~> 0.1.1)
-    activesupport (4.1.12)
-      i18n (~> 0.6, >= 0.6.9)
+    activesupport (4.2.5.1)
+      i18n (~> 0.7)
       json (~> 1.7, >= 1.7.7)
       minitest (~> 5.1)
-      thread_safe (~> 0.1)
+      thread_safe (~> 0.3, >= 0.3.4)
       tzinfo (~> 1.1)
     acts-as-taggable-on (3.5.0)
       activerecord (>= 3.2, < 5)
     addressable (2.3.8)
-    after_commit_queue (1.1.0)
-      rails (>= 3.0)
+    after_commit_queue (1.3.0)
+      activerecord (>= 3.0)
+    akismet (2.0.0)
+    allocations (1.0.4)
     annotate (2.6.10)
       activerecord (>= 3.2, <= 4.3)
       rake (~> 10.4)
-    arel (5.0.1.20140414130214)
-    asana (0.0.6)
-      activeresource (>= 3.2.3)
-    asciidoctor (1.5.2)
+    arel (6.0.3)
+    asana (0.4.0)
+      faraday (~> 0.9)
+      faraday_middleware (~> 0.9)
+      faraday_middleware-multi_json (~> 0.0)
+      oauth2 (~> 1.0)
+    asciidoctor (1.5.3)
     ast (2.1.0)
     astrolabe (1.3.1)
       parser (~> 2.2)
     attr_encrypted (1.3.4)
       encryptor (>= 1.3.0)
     attr_required (1.0.0)
-    autoprefixer-rails (5.2.1.2)
+    autoprefixer-rails (6.2.3)
       execjs
       json
     awesome_print (1.2.0)
@@ -65,29 +77,39 @@ GEM
       descendants_tracker (~> 0.0.4)
       ice_nine (~> 0.11.0)
       thread_safe (~> 0.3, >= 0.3.1)
+    babosa (1.0.2)
     bcrypt (3.1.10)
+    benchmark-ips (2.3.0)
     better_errors (1.0.1)
       coderay (>= 1.0.0)
       erubis (>= 2.6.6)
     binding_of_caller (0.7.2)
       debug_inspector (>= 0.0.1)
-    bootstrap-sass (3.3.5)
-      autoprefixer-rails (>= 5.0.0.1)
-      sass (>= 3.2.19)
-    brakeman (3.0.1)
+    bootstrap-sass (3.3.6)
+      autoprefixer-rails (>= 5.2.1)
+      sass (>= 3.3.4)
+    brakeman (3.1.4)
       erubis (~> 2.6)
       fastercsv (~> 1.5)
       haml (>= 3.0, < 5.0)
-      highline (~> 1.6.20)
+      highline (>= 1.6.20, < 2.0)
       multi_json (~> 1.2)
-      ruby2ruby (~> 2.1.1)
-      ruby_parser (~> 3.5.0)
+      ruby2ruby (>= 2.1.1, < 2.3.0)
+      ruby_parser (~> 3.7.0)
+      safe_yaml (>= 1.0)
       sass (~> 3.0)
+      slim (>= 1.3.6, < 4.0)
       terminal-table (~> 1.4)
-    browser (1.0.0)
+    browser (1.0.1)
     builder (3.2.2)
-    byebug (6.0.2)
-    cal-heatmap-rails (0.0.1)
+    bullet (4.14.10)
+      activesupport (>= 3.0.0)
+      uniform_notifier (~> 1.9.0)
+    bundler-audit (0.4.0)
+      bundler (~> 1.2)
+      thor (~> 0.18)
+    byebug (8.2.1)
+    cal-heatmap-rails (3.5.1)
     capybara (2.4.4)
       mime-types (>= 1.16)
       nokogiri (>= 1.3.3)
@@ -101,11 +123,9 @@ GEM
       activemodel (>= 3.2.0)
       activesupport (>= 3.2.0)
       json (>= 1.7)
-    celluloid (0.16.0)
-      timers (~> 4.0.0)
-    charlock_holmes (0.6.9.4)
-    chronic (0.10.2)
-    chunky_png (1.3.4)
+    cause (0.1)
+    charlock_holmes (0.7.3)
+    chunky_png (1.3.5)
     cliver (0.3.2)
     coderay (1.1.0)
     coercible (1.0.0)
@@ -116,29 +136,31 @@ GEM
     coffee-script (2.4.1)
       coffee-script-source
       execjs
-    coffee-script-source (1.9.1.1)
-    colored (1.2)
-    colorize (0.5.8)
+    coffee-script-source (1.10.0)
+    colorize (0.7.7)
+    concurrent-ruby (1.0.0)
     connection_pool (2.2.0)
-    coveralls (0.8.2)
+    coveralls (0.8.9)
       json (~> 1.8)
       rest-client (>= 1.6.8, < 2)
       simplecov (~> 0.10.0)
       term-ansicolor (~> 1.3)
       thor (~> 0.19.1)
-    crack (0.4.2)
+      tins (~> 1.6.0)
+    crack (0.4.3)
       safe_yaml (~> 1.0.0)
-    creole (0.3.8)
-    d3_rails (3.5.6)
+    creole (0.5.0)
+    d3_rails (3.5.11)
       railties (>= 3.1.0)
     daemons (1.2.3)
     database_cleaner (1.4.1)
     debug_inspector (0.0.2)
+    debugger-ruby_core_source (1.3.8)
     default_value_for (3.0.1)
       activerecord (>= 3.2.0, < 5.0)
     descendants_tracker (0.0.4)
       thread_safe (~> 0.3, >= 0.3.1)
-    devise (3.5.2)
+    devise (3.5.4)
       bcrypt (~> 3.0)
       orm_adapter (~> 0.1)
       railties (>= 3.2.6, < 5)
@@ -147,7 +169,7 @@ GEM
       warden (~> 1.2.3)
     devise-async (0.9.0)
       devise (~> 3.2)
-    devise-two-factor (2.0.0)
+    devise-two-factor (2.0.1)
       activesupport
       attr_encrypted (~> 1.3.2)
       devise (~> 3.5.0)
@@ -156,22 +178,20 @@ GEM
     diff-lcs (1.2.5)
     diffy (3.0.7)
     docile (1.1.5)
-    domain_name (0.5.24)
+    domain_name (0.5.25)
       unf (>= 0.0.5, < 1.0.0)
-    doorkeeper (2.1.4)
+    doorkeeper (2.2.2)
       railties (>= 3.2)
-    dropzonejs-rails (0.7.1)
+    dropzonejs-rails (0.7.2)
       rails (> 3.1)
     email_reply_parser (0.5.8)
     email_spec (1.6.0)
       launchy (~> 2.1)
       mail (~> 2.2)
     encryptor (1.3.0)
-    enumerize (0.7.0)
-      activesupport (>= 3.2)
     equalizer (0.0.11)
     erubis (2.7.0)
-    escape_utils (0.2.4)
+    escape_utils (1.1.0)
     eventmachine (1.0.8)
     excon (0.45.4)
     execjs (2.6.0)
@@ -181,59 +201,116 @@ GEM
     factory_girl_rails (4.3.0)
       factory_girl (~> 4.3.0)
       railties (>= 3.0.0)
-    faraday (0.8.10)
-      multipart-post (~> 1.2.0)
+    faraday (0.9.2)
+      multipart-post (>= 1.2, < 3)
     faraday_middleware (0.10.0)
       faraday (>= 0.7.4, < 0.10)
+    faraday_middleware-multi_json (0.0.6)
+      faraday_middleware
+      multi_json
     fastercsv (1.5.5)
     ffaker (2.0.0)
     ffi (1.9.10)
     fission (0.5.0)
       CFPropertyList (~> 2.2)
-    flowdock (0.7.0)
+    flay (2.6.1)
+      ruby_parser (~> 3.0)
+      sexp_processor (~> 4.0)
+    flog (4.3.2)
+      ruby_parser (~> 3.1, > 3.1.0)
+      sexp_processor (~> 4.4)
+    flowdock (0.7.1)
       httparty (~> 0.7)
       multi_json
-    fog (1.25.0)
+    fog (1.36.0)
+      fog-aliyun (>= 0.1.0)
+      fog-atmos
+      fog-aws (>= 0.6.0)
       fog-brightbox (~> 0.4)
-      fog-core (~> 1.25)
+      fog-core (~> 1.32)
+      fog-dynect (~> 0.0.2)
+      fog-ecloud (~> 0.1)
+      fog-google (<= 0.1.0)
       fog-json
+      fog-local
+      fog-powerdns (>= 0.1.1)
       fog-profitbricks
       fog-radosgw (>= 0.0.2)
+      fog-riakcs
       fog-sakuracloud (>= 0.0.4)
+      fog-serverlove
       fog-softlayer
+      fog-storm_on_demand
       fog-terremark
       fog-vmfusion
       fog-voxel
+      fog-xenserver
       fog-xml (~> 0.1.1)
       ipaddress (~> 0.5)
       nokogiri (~> 1.5, >= 1.5.11)
-      opennebula
-    fog-brightbox (0.9.0)
+    fog-aliyun (0.1.0)
+      fog-core (~> 1.27)
+      fog-json (~> 1.0)
+      ipaddress (~> 0.8)
+      xml-simple (~> 1.1)
+    fog-atmos (0.1.0)
+      fog-core
+      fog-xml
+    fog-aws (0.8.1)
+      fog-core (~> 1.27)
+      fog-json (~> 1.0)
+      fog-xml (~> 0.1)
+      ipaddress (~> 0.8)
+    fog-brightbox (0.10.1)
       fog-core (~> 1.22)
       fog-json
       inflecto (~> 0.0.2)
-    fog-core (1.32.1)
+    fog-core (1.35.0)
       builder
       excon (~> 0.45)
       formatador (~> 0.2)
-      mime-types
-      net-scp (~> 1.1)
-      net-ssh (>= 2.1.3)
+    fog-dynect (0.0.2)
+      fog-core
+      fog-json
+      fog-xml
+    fog-ecloud (0.3.0)
+      fog-core
+      fog-xml
+    fog-google (0.1.0)
+      fog-core
+      fog-json
+      fog-xml
     fog-json (1.0.2)
       fog-core (~> 1.0)
       multi_json (~> 1.10)
+    fog-local (0.2.1)
+      fog-core (~> 1.27)
+    fog-powerdns (0.1.1)
+      fog-core (~> 1.27)
+      fog-json (~> 1.0)
+      fog-xml (~> 0.1)
     fog-profitbricks (0.0.5)
       fog-core
       fog-xml
       nokogiri
-    fog-radosgw (0.0.4)
+    fog-radosgw (0.0.5)
       fog-core (>= 1.21.0)
       fog-json
       fog-xml (>= 0.0.1)
-    fog-sakuracloud (1.0.1)
+    fog-riakcs (0.1.0)
+      fog-core
+      fog-json
+      fog-xml
+    fog-sakuracloud (1.7.5)
       fog-core
       fog-json
-    fog-softlayer (0.4.7)
+    fog-serverlove (0.1.2)
+      fog-core
+      fog-json
+    fog-softlayer (1.0.3)
+      fog-core
+      fog-json
+    fog-storm_on_demand (0.1.1)
       fog-core
       fog-json
     fog-terremark (0.1.0)
@@ -245,10 +322,13 @@ GEM
     fog-voxel (0.1.0)
       fog-core
       fog-xml
+    fog-xenserver (0.2.2)
+      fog-core
+      fog-xml
     fog-xml (0.1.2)
       fog-core
       nokogiri (~> 1.5, >= 1.5.11)
-    font-awesome-rails (4.4.0.0)
+    font-awesome-rails (4.5.0.0)
       railties (>= 3.2, < 5.0)
     foreman (0.78.0)
       thor (~> 0.19.1)
@@ -258,10 +338,15 @@ GEM
       ruby-progressbar (~> 1.4)
     gemnasium-gitlab-service (0.2.6)
       rugged (~> 0.21)
-    gemojione (2.0.1)
+    gemojione (2.2.1)
       json
     get_process_mem (0.2.0)
     gherkin-ruby (0.3.2)
+    github-linguist (4.7.5)
+      charlock_holmes (~> 0.7.3)
+      escape_utils (~> 1.1.0)
+      mime-types (>= 1.19)
+      rugged (>= 0.23.0b)
     github-markup (1.3.3)
     gitlab-flowdock-git-hook (1.0.1)
       flowdock (~> 0.7)
@@ -272,39 +357,39 @@ GEM
       diff-lcs (~> 1.1)
       mime-types (~> 1.15)
       posix-spawn (~> 0.3)
-    gitlab-linguist (3.0.1)
-      charlock_holmes (~> 0.6.6)
-      escape_utils (~> 0.2.4)
-      mime-types (~> 1.19)
-    gitlab_emoji (0.1.1)
-      gemojione (~> 2.0)
-    gitlab_git (7.2.15)
+    gitlab_emoji (0.3.1)
+      gemojione (~> 2.2, >= 2.2.1)
+    gitlab_git (8.2.0)
       activesupport (~> 4.0)
-      charlock_holmes (~> 0.6)
-      gitlab-linguist (~> 3.0)
-      rugged (~> 0.22.2)
+      charlock_holmes (~> 0.7.3)
+      github-linguist (~> 4.7.0)
+      rugged (~> 0.24.0b13)
     gitlab_meta (7.0)
     gitlab_omniauth-ldap (1.2.1)
       net-ldap (~> 0.9)
       omniauth (~> 1.0)
       pyu-ruby-sasl (~> 0.0.3.1)
       rubyntlm (~> 0.3)
+    globalid (0.3.6)
+      activesupport (>= 4.1.0)
     gollum-grit_adapter (1.0.0)
       gitlab-grit (~> 2.7, >= 2.7.1)
-    gollum-lib (4.0.3)
+    gollum-lib (4.1.0)
       github-markup (~> 1.3.3)
       gollum-grit_adapter (~> 1.0)
       nokogiri (~> 1.6.4)
-      rouge (~> 1.10.1)
+      rouge (~> 1.9)
       sanitize (~> 2.1.0)
       stringex (~> 2.5.1)
-    gon (5.0.4)
-      actionpack (>= 2.3.0)
+    gon (6.0.1)
+      actionpack (>= 3.0)
       json
-    grape (0.6.1)
+      multi_json
+      request_store (>= 1.0)
+    grape (0.13.0)
       activesupport
       builder
-      hashie (>= 1.2.0)
+      hashie (>= 2.1.0)
       multi_json (>= 1.3.2)
       multi_xml (>= 0.5.2)
       rack (>= 1.3.0)
@@ -314,106 +399,91 @@ GEM
     grape-entity (0.4.8)
       activesupport
       multi_json (>= 1.3.2)
-    growl (1.0.3)
-    guard (2.13.0)
-      formatador (>= 0.2.4)
-      listen (>= 2.7, <= 4.0)
-      lumberjack (~> 1.0)
-      nenv (~> 0.1)
-      notiffany (~> 0.0)
-      pry (>= 0.9.12)
-      shellany (~> 0.0)
-      thor (>= 0.18.1)
-    guard-rspec (4.2.10)
-      guard (~> 2.1)
-      rspec (>= 2.14, < 4.0)
     haml (4.0.7)
       tilt
-    haml-rails (0.5.3)
+    haml-rails (0.9.0)
       actionpack (>= 4.0.1)
       activesupport (>= 4.0.1)
-      haml (>= 3.1, < 5.0)
+      haml (>= 4.0.6, < 5.0)
+      html2haml (>= 1.0.1)
       railties (>= 4.0.1)
-    hashie (2.1.2)
-    highline (1.6.21)
+    hashie (3.4.3)
+    highline (1.7.8)
     hike (1.2.3)
     hipchat (1.5.2)
       httparty
       mimemagic
-    hitimes (1.2.3)
     html-pipeline (1.11.0)
       activesupport (>= 2)
       nokogiri (~> 1.4)
+    html2haml (2.0.0)
+      erubis (~> 2.7.0)
+      haml (~> 4.0.0)
+      nokogiri (~> 1.6.0)
+      ruby_parser (~> 3.5)
     http-cookie (1.0.2)
       domain_name (~> 0.5)
     http_parser.rb (0.5.3)
-    httparty (0.13.5)
+    httparty (0.13.7)
       json (~> 1.8)
       multi_xml (>= 0.5.2)
-    httpclient (2.6.0.1)
+    httpclient (2.7.0.1)
     i18n (0.7.0)
-    ice_cube (0.11.1)
     ice_nine (0.11.1)
     inflecto (0.0.2)
-    ipaddress (0.8.0)
-    jquery-atwho-rails (1.0.1)
-    jquery-rails (3.1.3)
-      railties (>= 3.0, < 5.0)
+    influxdb (0.2.3)
+      cause
+      json
+    ipaddress (0.8.2)
+    jquery-atwho-rails (1.3.2)
+    jquery-rails (4.0.5)
+      rails-dom-testing (~> 1.0)
+      railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
     jquery-scrollto-rails (1.4.3)
       railties (> 3.1, < 5.0)
-    jquery-turbolinks (2.0.2)
+    jquery-turbolinks (2.1.0)
       railties (>= 3.1.0)
       turbolinks
-    jquery-ui-rails (4.2.1)
+    jquery-ui-rails (5.0.5)
       railties (>= 3.2.16)
     json (1.8.3)
-    jwt (1.5.1)
-    kaminari (0.15.1)
+    jwt (1.5.2)
+    kaminari (0.16.3)
       actionpack (>= 3.0.0)
       activesupport (>= 3.0.0)
-    kgio (2.9.3)
+    kgio (2.10.0)
     launchy (2.4.3)
       addressable (~> 2.3)
     letter_opener (1.1.2)
       launchy (~> 2.2)
-    listen (2.10.1)
-      celluloid (~> 0.16.0)
+    listen (3.0.5)
       rb-fsevent (>= 0.9.3)
       rb-inotify (>= 0.9)
-    lumberjack (1.0.9)
+    loofah (2.0.3)
+      nokogiri (>= 1.5.9)
     macaddr (1.7.1)
       systemu (~> 2.6.2)
     mail (2.6.3)
       mime-types (>= 1.16, < 3)
-    mail_room (0.5.2)
+    mail_room (0.6.1)
     method_source (0.8.2)
     mime-types (1.25.1)
     mimemagic (0.3.0)
-    mini_portile (0.6.2)
+    mini_portile2 (2.0.0)
     minitest (5.7.0)
     mousetrap-rails (1.4.6)
     multi_json (1.11.2)
     multi_xml (0.5.5)
-    multipart-post (1.2.0)
+    multipart-post (2.0.0)
     mysql2 (0.3.20)
-    nenv (0.2.0)
     nested_form (0.3.2)
-    net-ldap (0.11)
-    net-scp (1.2.1)
-      net-ssh (>= 2.6.5)
-    net-ssh (2.9.2)
-    netrc (0.10.3)
-    newrelic-grape (2.0.0)
-      grape
-      newrelic_rpm
-    newrelic_rpm (3.9.4.245)
-    nokogiri (1.6.6.2)
-      mini_portile (~> 0.6.0)
-    notiffany (0.0.7)
-      nenv (~> 0.1)
-      shellany (~> 0.0)
-    nprogress-rails (0.1.2.3)
+    net-ldap (0.12.1)
+    net-ssh (3.0.1)
+    netrc (0.11.0)
+    nokogiri (1.6.7.2)
+      mini_portile2 (~> 2.0.0.rc2)
+    nprogress-rails (0.1.6.7)
     oauth (0.4.7)
     oauth2 (1.0.0)
       faraday (>= 0.8, < 0.10)
@@ -421,25 +491,38 @@ GEM
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
       rack (~> 1.2)
-    octokit (3.7.1)
+    octokit (3.8.0)
       sawyer (~> 0.6.0, >= 0.5.3)
-    omniauth (1.2.2)
+    omniauth (1.3.1)
       hashie (>= 1.2, < 4)
-      rack (~> 1.0)
+      rack (>= 1.0, < 3)
+    omniauth-azure-oauth2 (0.0.6)
+      jwt (~> 1.0)
+      omniauth (~> 1.0)
+      omniauth-oauth2 (~> 1.1)
     omniauth-bitbucket (0.0.2)
       multi_json (~> 1.7)
       omniauth (~> 1.1)
       omniauth-oauth (~> 1.0)
+    omniauth-cas3 (1.1.3)
+      addressable (~> 2.3)
+      nokogiri (~> 1.6.6)
+      omniauth (~> 1.2)
+    omniauth-facebook (3.0.0)
+      omniauth-oauth2 (~> 1.2)
     omniauth-github (1.1.2)
       omniauth (~> 1.0)
       omniauth-oauth2 (~> 1.1)
-    omniauth-gitlab (1.0.0)
+    omniauth-gitlab (1.0.1)
       omniauth (~> 1.0)
       omniauth-oauth2 (~> 1.0)
-    omniauth-google-oauth2 (0.2.6)
-      omniauth (> 1.0)
-      omniauth-oauth2 (~> 1.1)
-    omniauth-kerberos (0.2.0)
+    omniauth-google-oauth2 (0.2.10)
+      addressable (~> 2.3)
+      jwt (~> 1.0)
+      multi_json (~> 1.3)
+      omniauth (>= 1.1.1)
+      omniauth-oauth2 (~> 1.3.1)
+    omniauth-kerberos (0.3.0)
       omniauth-multipassword
       timfel-krb5-auth (~> 0.8)
     omniauth-multipassword (0.4.2)
@@ -450,38 +533,34 @@ GEM
     omniauth-oauth2 (1.3.1)
       oauth2 (~> 1.0)
       omniauth (~> 1.2)
-    omniauth-saml (1.4.1)
+    omniauth-saml (1.4.2)
       omniauth (~> 1.1)
-      ruby-saml (~> 1.0.0)
-    omniauth-shibboleth (1.1.2)
+      ruby-saml (~> 1.1, >= 1.1.1)
+    omniauth-shibboleth (1.2.1)
       omniauth (>= 1.0.0)
-    omniauth-twitter (1.0.1)
-      multi_json (~> 1.3)
-      omniauth-oauth (~> 1.0)
+    omniauth-twitter (1.2.1)
+      json (~> 1.3)
+      omniauth-oauth (~> 1.1)
     omniauth_crowd (2.2.3)
       activesupport
       nokogiri (>= 1.4.4)
       omniauth (~> 1.0)
-    opennebula (4.12.1)
-      json
-      nokogiri
-      rbvmomi
     org-ruby (0.9.12)
       rubypants (~> 0.2)
     orm_adapter (0.5.0)
-    paranoia (2.1.3)
+    paranoia (2.1.4)
       activerecord (~> 4.0)
-    parser (2.2.2.6)
+    parser (2.2.3.0)
       ast (>= 1.1, < 3.0)
-    pg (0.18.2)
-    poltergeist (1.6.0)
+    pg (0.18.4)
+    poltergeist (1.8.1)
       capybara (~> 2.1)
       cliver (~> 0.3.1)
       multi_json (~> 1.0)
       websocket-driver (>= 0.2.0)
     posix-spawn (0.3.11)
-    powerpack (0.0.9)
-    pry (0.10.1)
+    powerpack (0.1.1)
+    pry (0.10.3)
       coderay (~> 1.1.0)
       method_source (~> 0.8.1)
       slop (~> 3.4)
@@ -490,17 +569,15 @@ GEM
     pyu-ruby-sasl (0.0.3.3)
     quiet_assets (1.0.3)
       railties (>= 3.1, < 5.0)
-    rack (1.5.5)
+    rack (1.6.4)
     rack-accept (0.4.5)
       rack (>= 0.4)
-    rack-attack (4.3.0)
+    rack-attack (4.3.1)
       rack
-    rack-cors (0.2.9)
-    rack-mini-profiler (0.9.7)
-      rack (>= 1.1.3)
+    rack-cors (0.4.0)
     rack-mount (0.8.3)
       rack (>= 1.0.0)
-    rack-oauth2 (1.0.10)
+    rack-oauth2 (1.2.1)
       activesupport (>= 2.3)
       attr_required (>= 0.0.5)
       httpclient (>= 2.4)
@@ -510,44 +587,51 @@ GEM
       rack
     rack-test (0.6.3)
       rack (>= 1.0)
-    rails (4.1.12)
-      actionmailer (= 4.1.12)
-      actionpack (= 4.1.12)
-      actionview (= 4.1.12)
-      activemodel (= 4.1.12)
-      activerecord (= 4.1.12)
-      activesupport (= 4.1.12)
+    rails (4.2.5.1)
+      actionmailer (= 4.2.5.1)
+      actionpack (= 4.2.5.1)
+      actionview (= 4.2.5.1)
+      activejob (= 4.2.5.1)
+      activemodel (= 4.2.5.1)
+      activerecord (= 4.2.5.1)
+      activesupport (= 4.2.5.1)
       bundler (>= 1.3.0, < 2.0)
-      railties (= 4.1.12)
-      sprockets-rails (~> 2.0)
-    rails-observers (0.1.2)
-      activemodel (~> 4.0)
-    railties (4.1.12)
-      actionpack (= 4.1.12)
-      activesupport (= 4.1.12)
+      railties (= 4.2.5.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)
+    railties (4.2.5.1)
+      actionpack (= 4.2.5.1)
+      activesupport (= 4.2.5.1)
       rake (>= 0.8.7)
       thor (>= 0.18.1, < 2.0)
     rainbow (2.0.0)
     raindrops (0.15.0)
-    rake (10.4.2)
+    rake (10.5.0)
     raphael-rails (2.1.2)
-    rb-fsevent (0.9.5)
+    rb-fsevent (0.9.6)
     rb-inotify (0.9.5)
       ffi (>= 0.5.0)
-    rbvmomi (1.8.2)
-      builder
-      nokogiri (>= 1.4.1)
-      trollop
+    rblineprof (0.3.6)
+      debugger-ruby_core_source (~> 1.3)
     rdoc (3.12.2)
       json (~> 1.4)
-    redcarpet (3.3.2)
-    redis (3.2.1)
-    redis-actionpack (4.0.0)
+    recaptcha (1.0.2)
+      json
+    redcarpet (3.3.3)
+    redis (3.2.2)
+    redis-actionpack (4.0.1)
       actionpack (~> 4)
       redis-rack (~> 1.5.0)
       redis-store (~> 1.1.0)
-    redis-activesupport (4.1.1)
-      activesupport (~> 4)
+    redis-activesupport (4.1.5)
+      activesupport (>= 3, < 5)
       redis-store (~> 1.1.0)
     redis-namespace (1.5.2)
       redis (~> 3.0, >= 3.0.4)
@@ -558,13 +642,13 @@ GEM
       redis-actionpack (~> 4)
       redis-activesupport (~> 4)
       redis-store (~> 1.1.0)
-    redis-store (1.1.6)
+    redis-store (1.1.7)
       redis (>= 2.2)
-    request_store (1.2.0)
-    rerun (0.10.0)
-      listen (~> 2.7, >= 2.7.3)
-    responders (1.1.2)
-      railties (>= 3.2, < 4.2)
+    request_store (1.2.1)
+    rerun (0.11.0)
+      listen (~> 3.0)
+    responders (2.1.1)
+      railties (>= 4.2.0, < 5.1)
     rest-client (1.8.0)
       http-cookie (>= 1.0.2, < 2.0)
       mime-types (>= 1.16, < 3.0)
@@ -597,35 +681,38 @@ GEM
       rspec-mocks (~> 3.3.0)
       rspec-support (~> 3.3.0)
     rspec-support (3.3.0)
-    rubocop (0.28.0)
+    rubocop (0.35.1)
       astrolabe (~> 1.3)
-      parser (>= 2.2.0.pre.7, < 3.0)
-      powerpack (~> 0.0.6)
+      parser (>= 2.2.3.0, < 3.0)
+      powerpack (~> 0.1)
       rainbow (>= 1.99.1, < 3.0)
-      ruby-progressbar (~> 1.4)
+      ruby-progressbar (~> 1.7)
+      tins (<= 1.6.0)
     ruby-fogbugz (0.2.1)
       crack (~> 0.4)
     ruby-progressbar (1.7.5)
-    ruby-saml (1.0.0)
+    ruby-saml (1.1.1)
       nokogiri (>= 1.5.10)
       uuid (~> 2.3)
-    ruby2ruby (2.1.4)
+    ruby2ruby (2.2.0)
       ruby_parser (~> 3.1)
       sexp_processor (~> 4.0)
-    ruby_parser (3.5.0)
+    ruby_parser (3.7.2)
       sexp_processor (~> 4.1)
     rubyntlm (0.5.2)
     rubypants (0.2.0)
-    rugged (0.22.2)
+    rufus-scheduler (3.1.10)
+    rugged (0.24.0b13)
     safe_yaml (1.0.4)
     sanitize (2.1.0)
       nokogiri (>= 1.4.4)
-    sass (3.2.19)
-    sass-rails (4.0.5)
+    sass (3.4.20)
+    sass-rails (5.0.4)
       railties (>= 4.0.0, < 5.0)
-      sass (~> 3.2.2)
-      sprockets (~> 2.8, < 3.0)
-      sprockets-rails (~> 2.0)
+      sass (~> 3.1)
+      sprockets (>= 2.8, < 4.0)
+      sprockets-rails (>= 2.0, < 4.0)
+      tilt (>= 1.1, < 3)
     sawyer (0.6.0)
       addressable (~> 2.3.5)
       faraday (~> 0.8, < 0.10)
@@ -637,23 +724,23 @@ GEM
       activesupport (>= 3.1, < 4.3)
     select2-rails (3.5.9.3)
       thor (~> 0.14)
+    sentry-raven (0.15.4)
+      faraday (>= 0.7.6)
     settingslogic (2.0.9)
     sexp_processor (4.6.0)
     sham_rack (1.3.6)
       rack
-    shellany (0.0.1)
     shoulda-matchers (2.8.0)
       activesupport (>= 3.0.0)
-    sidekiq (3.3.0)
-      celluloid (>= 0.16.0)
-      connection_pool (>= 2.0.0)
-      json
-      redis (>= 3.0.6)
-      redis-namespace (>= 1.3.1)
-    sidetiq (0.6.3)
-      celluloid (>= 0.14.1)
-      ice_cube (= 0.11.1)
-      sidekiq (>= 3.0.0)
+    sidekiq (4.0.1)
+      concurrent-ruby (~> 1.0)
+      connection_pool (~> 2.2, >= 2.2.0)
+      json (~> 1.0)
+      redis (~> 3.2, >= 3.2.1)
+    sidekiq-cron (0.4.0)
+      redis-namespace (>= 1.5.2)
+      rufus-scheduler (>= 2.0.24)
+      sidekiq (>= 4.0.0)
     simple_oauth (0.1.9)
     simplecov (0.10.0)
       docile (~> 1.1.0)
@@ -665,9 +752,9 @@ GEM
       rack-protection (~> 1.4)
       tilt (>= 1.3, < 3)
     six (0.2.0)
-    slack-notifier (1.0.0)
-    slim (2.0.3)
-      temple (~> 0.6.6)
+    slack-notifier (1.2.1)
+    slim (3.0.6)
+      temple (~> 0.7.3)
       tilt (>= 1.3.3, < 2.1)
     slop (3.6.0)
     spinach (0.8.10)
@@ -690,12 +777,17 @@ GEM
       multi_json (~> 1.0)
       rack (~> 1.0)
       tilt (~> 1.1, != 1.3.0)
-    sprockets-rails (2.3.2)
+    sprockets-rails (2.3.3)
       actionpack (>= 3.0)
       activesupport (>= 3.0)
       sprockets (>= 2.8, < 4.0)
-    stamp (0.5.0)
-    state_machine (1.2.0)
+    state_machines (0.4.0)
+    state_machines-activemodel (0.3.0)
+      activemodel (~> 4.1)
+      state_machines (>= 0.4.0)
+    state_machines-activerecord (0.3.0)
+      activerecord (~> 4.1)
+      state_machines-activemodel (>= 0.3.0)
     stringex (2.5.2)
     systemu (2.6.5)
     task_list (1.0.2)
@@ -704,33 +796,30 @@ GEM
       railties (>= 3.2.5, < 5)
     teaspoon-jasmine (2.2.0)
       teaspoon (>= 1.0.0)
-    temple (0.6.10)
+    temple (0.7.6)
     term-ansicolor (1.3.2)
       tins (~> 1.0)
     terminal-table (1.5.2)
-    test_after_commit (0.2.7)
+    test_after_commit (0.4.2)
       activerecord (>= 3.2)
-    thin (1.6.3)
+    thin (1.6.4)
       daemons (~> 1.0, >= 1.0.9)
-      eventmachine (~> 1.0)
+      eventmachine (~> 1.0, >= 1.0.4)
       rack (~> 1.0)
     thor (0.19.1)
     thread_safe (0.3.5)
     tilt (1.4.1)
-    timers (4.0.4)
-      hitimes
     timfel-krb5-auth (0.8.3)
-    tinder (1.9.4)
+    tinder (1.10.1)
       eventmachine (~> 1.0)
-      faraday (~> 0.8.9)
+      faraday (~> 0.9.0)
       faraday_middleware (~> 0.9)
-      hashie (>= 1.0, < 3)
+      hashie (>= 1.0)
       json (~> 1.8.0)
-      mime-types (~> 1.19)
+      mime-types
       multi_json (~> 1.7)
       twitter-stream (~> 0.1)
     tins (1.6.0)
-    trollop (2.1.2)
     turbolinks (2.5.3)
       coffee-rails
     twitter-stream (0.1.16)
@@ -739,10 +828,10 @@ GEM
       simple_oauth (~> 0.1.4)
     tzinfo (1.2.2)
       thread_safe (~> 0.1)
-    uglifier (2.3.3)
+    uglifier (2.7.2)
       execjs (>= 0.3.0)
       json (>= 1.8.0)
-    underscore-rails (1.4.4)
+    underscore-rails (1.8.3)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.1)
@@ -750,9 +839,10 @@ GEM
       kgio (~> 2.6)
       rack
       raindrops (~> 0.7)
-    unicorn-worker-killer (0.4.3)
+    unicorn-worker-killer (0.4.4)
       get_process_mem (~> 0)
-      unicorn (~> 4)
+      unicorn (>= 4, < 6)
+    uniform_notifier (1.9.0)
     uuid (2.3.8)
       macaddr (~> 1.0)
     version_sorter (2.0.0)
@@ -761,21 +851,24 @@ GEM
       coercible (~> 1.0)
       descendants_tracker (~> 0.0, >= 0.0.3)
       equalizer (~> 0.0, >= 0.0.9)
-    warden (1.2.3)
+    warden (1.2.4)
       rack (>= 1.0)
+    web-console (2.2.1)
+      activemodel (>= 4.0)
+      binding_of_caller (>= 0.7.2)
+      railties (>= 4.0)
+      sprockets-rails (>= 2.0, < 4.0)
     webmock (1.21.0)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
-    websocket-driver (0.6.2)
+    websocket-driver (0.6.3)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
-    whenever (0.8.4)
-      activesupport (>= 2.3.4)
-      chronic (>= 0.6.3)
     wikicloth (0.8.1)
       builder
       expression_parser
       rinku
+    xml-simple (1.1.5)
     xpath (2.0.0)
       nokogiri (~> 1.3)
 
@@ -786,154 +879,171 @@ DEPENDENCIES
   RedCloth (~> 4.2.9)
   ace-rails-ap (~> 2.0.1)
   activerecord-deprecated_finders (~> 1.0.3)
+  activerecord-nulldb-adapter
   activerecord-session_store (~> 0.1.0)
   acts-as-taggable-on (~> 3.4)
   addressable (~> 2.3.8)
   after_commit_queue
+  akismet (~> 2.0)
+  allocations (~> 1.0)
   annotate (~> 2.6.0)
-  asana (~> 0.0.6)
+  asana (~> 0.4.0)
   asciidoctor (~> 1.5.2)
   attr_encrypted (~> 1.3.4)
   awesome_print (~> 1.2.0)
+  babosa (~> 1.0.2)
+  benchmark-ips
   better_errors (~> 1.0.1)
   binding_of_caller (~> 0.7.2)
-  bootstrap-sass (~> 3.0)
-  brakeman (= 3.0.1)
+  bootstrap-sass (~> 3.3.0)
+  brakeman (~> 3.1.0)
   browser (~> 1.0.0)
+  bullet
+  bundler-audit
   byebug
-  cal-heatmap-rails (~> 0.0.1)
+  cal-heatmap-rails (~> 3.5.0)
   capybara (~> 2.4.0)
   capybara-screenshot (~> 1.0.0)
   carrierwave (~> 0.9.0)
-  charlock_holmes (~> 0.6.9.4)
+  charlock_holmes (~> 0.7.3)
   coffee-rails (~> 4.1.0)
-  colored (~> 1.2)
-  colorize (~> 0.5.8)
+  colorize (~> 0.7.0)
+  connection_pool (~> 2.0)
   coveralls (~> 0.8.2)
-  creole (~> 0.3.6)
-  d3_rails (~> 3.5.5)
+  creole (~> 0.5.0)
+  d3_rails (~> 3.5.0)
   database_cleaner (~> 1.4.0)
   default_value_for (~> 3.0.0)
-  devise (~> 3.5.2)
+  devise (~> 3.5.4)
   devise-async (~> 0.9.0)
   devise-two-factor (~> 2.0.0)
   diffy (~> 3.0.3)
-  doorkeeper (~> 2.1.3)
+  doorkeeper (~> 2.2.0)
   dropzonejs-rails (~> 0.7.1)
   email_reply_parser (~> 0.5.8)
   email_spec (~> 1.6.0)
-  enumerize (~> 0.7.0)
   factory_girl_rails (~> 4.3.0)
   ffaker (~> 2.0.0)
-  fog (~> 1.25.0)
+  flay
+  flog
+  fog (~> 1.36.0)
   font-awesome-rails (~> 4.2)
   foreman
   fuubar (~> 2.0.0)
   gemnasium-gitlab-service (~> 0.2)
+  github-linguist (~> 4.7.0)
   github-markup (~> 1.3.1)
   gitlab-flowdock-git-hook (~> 1.0.1)
-  gitlab-linguist (~> 3.0.1)
-  gitlab_emoji (~> 0.1)
-  gitlab_git (~> 7.2.15)
+  gitlab_emoji (~> 0.3.0)
+  gitlab_git (~> 8.2)
   gitlab_meta (= 7.0)
   gitlab_omniauth-ldap (~> 1.2.1)
-  gollum-lib (~> 4.0.2)
-  gon (~> 5.0.0)
-  grape (~> 0.6.1)
+  gollum-lib (~> 4.1.0)
+  gon (~> 6.0.1)
+  grape (~> 0.13.0)
   grape-entity (~> 0.4.2)
-  growl
-  guard-rspec (~> 4.2.0)
-  haml-rails (~> 0.5.3)
+  haml-rails (~> 0.9.0)
   hipchat (~> 1.5.0)
   html-pipeline (~> 1.11.0)
   httparty (~> 0.13.3)
-  jquery-atwho-rails (~> 1.0.0)
-  jquery-rails (~> 3.1.3)
+  influxdb (~> 0.2)
+  jquery-atwho-rails (~> 1.3.2)
+  jquery-rails (~> 4.0.0)
   jquery-scrollto-rails (~> 1.4.3)
-  jquery-turbolinks (~> 2.0.1)
-  jquery-ui-rails (~> 4.2.1)
-  kaminari (~> 0.15.1)
+  jquery-turbolinks (~> 2.1.0)
+  jquery-ui-rails (~> 5.0.0)
+  kaminari (~> 0.16.3)
   letter_opener (~> 1.1.2)
-  mail_room (~> 0.5.2)
+  loofah (~> 2.0.3)
+  mail_room (~> 0.6.1)
+  method_source (~> 0.8)
   minitest (~> 5.7.0)
   mousetrap-rails (~> 1.4.6)
   mysql2 (~> 0.3.16)
   nested_form (~> 0.3.2)
-  newrelic-grape
-  newrelic_rpm (~> 3.9.4.245)
-  nprogress-rails (~> 0.1.2.3)
+  net-ssh (~> 3.0.1)
+  nokogiri (~> 1.6.7, >= 1.6.7.2)
+  nprogress-rails (~> 0.1.6.7)
   oauth2 (~> 1.0.0)
-  octokit (~> 3.7.0)
-  omniauth (~> 1.2.2)
+  octokit (~> 3.8.0)
+  omniauth (~> 1.3.1)
+  omniauth-azure-oauth2 (~> 0.0.6)
   omniauth-bitbucket (~> 0.0.2)
+  omniauth-cas3 (~> 1.1.2)
+  omniauth-facebook (~> 3.0.0)
   omniauth-github (~> 1.1.1)
   omniauth-gitlab (~> 1.0.0)
-  omniauth-google-oauth2 (~> 0.2.5)
-  omniauth-kerberos (~> 0.2.0)
-  omniauth-saml (~> 1.4.0)
-  omniauth-shibboleth (~> 1.1.1)
-  omniauth-twitter (~> 1.0.1)
-  omniauth_crowd
+  omniauth-google-oauth2 (~> 0.2.0)
+  omniauth-kerberos (~> 0.3.0)
+  omniauth-saml (~> 1.4.2)
+  omniauth-shibboleth (~> 1.2.0)
+  omniauth-twitter (~> 1.2.0)
+  omniauth_crowd (~> 2.2.0)
   org-ruby (~> 0.9.12)
   paranoia (~> 2.0)
   pg (~> 0.18.2)
-  poltergeist (~> 1.6.0)
+  poltergeist (~> 1.8.1)
   pry-rails
   quiet_assets (~> 1.0.2)
-  rack-attack (~> 4.3.0)
-  rack-cors (~> 0.2.9)
-  rack-mini-profiler (~> 0.9.0)
-  rack-oauth2 (~> 1.0.5)
-  rails (= 4.1.12)
+  rack-attack (~> 4.3.1)
+  rack-cors (~> 0.4.0)
+  rack-oauth2 (~> 1.2.1)
+  rails (= 4.2.5.1)
+  rails-deprecated_sanitizer (~> 1.0.3)
   raphael-rails (~> 2.1.2)
-  rb-fsevent
-  rb-inotify
+  rblineprof
   rdoc (~> 3.6)
-  redcarpet (~> 3.3.2)
+  recaptcha
+  redcarpet (~> 3.3.3)
+  redis-namespace
   redis-rails (~> 4.0.0)
   request_store (~> 1.2.0)
-  rerun (~> 0.10.0)
+  rerun (~> 0.11.0)
+  responders (~> 2.0)
+  rouge (~> 1.10.1)
   rqrcode-rails3 (~> 0.1.7)
   rspec-rails (~> 3.3.0)
-  rubocop (~> 0.28.0)
+  rubocop (~> 0.35.0)
   ruby-fogbugz (~> 0.2.1)
   sanitize (~> 2.0)
-  sass-rails (~> 4.0.5)
+  sass-rails (~> 5.0.0)
   sdoc (~> 0.3.20)
   seed-fu (~> 2.3.5)
   select2-rails (~> 3.5.9)
+  sentry-raven
   settingslogic (~> 2.0.9)
   sham_rack
   shoulda-matchers (~> 2.8.0)
-  sidekiq (= 3.3.0)
-  sidetiq (~> 0.6.3)
+  sidekiq (~> 4.0)
+  sidekiq-cron (~> 0.4.0)
   simplecov (~> 0.10.0)
   sinatra (~> 1.4.4)
   six (~> 0.2.0)
-  slack-notifier (~> 1.0.0)
-  slim (~> 2.0.2)
+  slack-notifier (~> 1.2.0)
   spinach-rails (~> 0.2.1)
   spring (~> 1.3.6)
   spring-commands-rspec (~> 1.0.4)
   spring-commands-spinach (~> 1.0.0)
   spring-commands-teaspoon (~> 0.0.2)
   sprockets (~> 2.12.3)
-  stamp (~> 0.5.0)
-  state_machine (~> 1.2.0)
+  state_machines-activerecord (~> 0.3.0)
   task_list (~> 1.0.2)
   teaspoon (~> 1.0.0)
   teaspoon-jasmine (~> 2.2.0)
-  test_after_commit (~> 0.2.2)
+  test_after_commit (~> 0.4.2)
   thin (~> 1.6.1)
-  tinder (~> 1.9.2)
+  tinder (~> 1.10.0)
   turbolinks (~> 2.5.0)
-  uglifier (~> 2.3.2)
-  underscore-rails (~> 1.4.4)
+  uglifier (~> 2.7.2)
+  underscore-rails (~> 1.8.0)
   unf (~> 0.1.4)
   unicorn (~> 4.8.2)
   unicorn-worker-killer (~> 0.4.2)
   version_sorter (~> 2.0.0)
   virtus (~> 1.0.1)
+  web-console (~> 2.0)
   webmock (~> 1.21.0)
-  whenever (~> 0.8.4)
   wikicloth (= 0.8.1)
+
+BUNDLED WITH
+   1.11.2
diff --git a/pkgs/applications/version-management/gitlab/default.nix b/pkgs/applications/version-management/gitlab/default.nix
index 8af64ce78e9..4e86768e0dd 100644
--- a/pkgs/applications/version-management/gitlab/default.nix
+++ b/pkgs/applications/version-management/gitlab/default.nix
@@ -1,7 +1,10 @@
-{ stdenv, lib, bundler, fetchgit, bundlerEnv, defaultGemConfig, libiconv, ruby
+{ stdenv, lib, bundler, fetchFromGitHub, bundlerEnv, defaultGemConfig, libiconv, ruby
 , tzdata, git, nodejs, procps
 }:
 
+/* When updating the Gemfile add `gem "activerecord-nulldb-adapter"`
+   to allow building the assets without a database */
+
 let
   env = bundlerEnv {
     name = "gitlab";
@@ -21,19 +24,23 @@ in
 
 stdenv.mkDerivation rec {
   name = "gitlab-${version}";
-  version = "8.0.5";
+  version = "8.5.0";
+
   buildInputs = [ ruby bundler tzdata git nodejs procps ];
-  src = fetchgit {
-    url = "https://github.com/gitlabhq/gitlabhq.git";
-    rev = "2866c501b5a5abb69d101cc07261a1d684b4bd4c";
-    fetchSubmodules = false;
-    sha256 = "edc6bedd5e79940189355d8cb343d20b0781b69fcef56ccae5906fa5e81ed521";
+
+  src = fetchFromGitHub {
+    owner = "gitlabhq";
+    repo = "gitlabhq";
+    rev = "v${version}";
+    sha256 = "1rhl906xnvpxkw3ngwfzi80cl3daihx5vizy04b9b39adyd3i5hl";
   };
 
   patches = [
     ./remove-hardcoded-locations.patch
     ./disable-dump-schema-after-migration.patch
+    ./nulladapter.patch
   ];
+
   postPatch = ''
     # For reasons I don't understand "bundle exec" ignores the
     # RAILS_ENV causing tests to be executed that fail because we're
@@ -41,7 +48,6 @@ stdenv.mkDerivation rec {
     # tests works though.:
     rm lib/tasks/test.rake
 
-    mv config/gitlab.yml.example config/gitlab.yml
     rm config/initializers/gitlab_shell_secret_token.rb
 
     substituteInPlace app/controllers/admin/background_jobs_controller.rb \
@@ -50,7 +56,7 @@ stdenv.mkDerivation rec {
     # required for some gems:
     cat > config/database.yml <<EOF
       production:
-        adapter: postgresql
+        adapter: <%= ENV["GITLAB_DATABASE_ADAPTER"] || sqlite %>
         database: gitlab
         host: <%= ENV["GITLAB_DATABASE_HOST"] || "127.0.0.1" %>
         password: <%= ENV["GITLAB_DATABASE_PASSWORD"] || "blerg" %>
@@ -58,14 +64,22 @@ stdenv.mkDerivation rec {
         encoding: utf8
     EOF
   '';
+
   buildPhase = ''
     export GEM_HOME=${env}/${ruby.gemPath}
-    bundle exec rake assets:precompile RAILS_ENV=production
+    mv config/gitlab.yml.example config/gitlab.yml
+    GITLAB_DATABASE_ADAPTER=nulldb bundle exec rake assets:precompile RAILS_ENV=production
+    mv config/gitlab.yml config/gitlab.yml.example
+    mv config config.dist
   '';
+
   installPhase = ''
     mkdir -p $out/share
     cp -r . $out/share/gitlab
+    ln -sf /run/gitlab/uploads $out/share/gitlab/public/uploads
+    ln -sf /run/gitlab/config $out/share/gitlab/config
   '';
+
   passthru = {
     inherit env;
     inherit ruby;
diff --git a/pkgs/applications/version-management/gitlab/gemset.nix b/pkgs/applications/version-management/gitlab/gemset.nix
index c5e10dd166a..95905fb7dfc 100644
--- a/pkgs/applications/version-management/gitlab/gemset.nix
+++ b/pkgs/applications/version-management/gitlab/gemset.nix
@@ -1,3150 +1,3009 @@
 {
-  "CFPropertyList" = {
-    version = "2.3.1";
+  xpath = {
+    dependencies = ["nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04kcr127l34p7221z13blyl0dvh0bmxwx326j72idayri36a394w";
       type = "gem";
-      sha256 = "1wnk3gxnhfafbhgp0ic7qhzlx3lhv04v8nws2s31ii5s8135hs6k";
     };
+    version = "2.0.0";
   };
-  "RedCloth" = {
-    version = "4.2.9";
+  xml-simple = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8";
       type = "gem";
-      sha256 = "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl";
     };
+    version = "1.1.5";
   };
-  "ace-rails-ap" = {
-    version = "2.0.1";
+  wikicloth = {
+    dependencies = ["builder" "expression_parser" "rinku"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jp6c2yzyqbap8jdiw8yz6l08sradky1llhyhmrg934l1b5akj3s";
       type = "gem";
-      sha256 = "082n12rkd9j7d89030nhmi4fx1gqaf13knps6cknsyvwix7fryvv";
     };
+    version = "0.8.1";
   };
-  "actionmailer" = {
-    version = "4.1.12";
+  websocket-extensions = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07qnsafl6203a2zclxl20hy4jq11c471cgvd0bj5r9fx1qqw06br";
       type = "gem";
-      sha256 = "0p1hydjf5vb4na4fs29v7cdknfq3d6qvmld2vbafbh78kkclxi2m";
     };
-    dependencies = [
-      "actionpack"
-      "actionview"
-      "mail"
-    ];
+    version = "0.1.2";
   };
-  "actionpack" = {
-    version = "4.1.12";
+  websocket-driver = {
+    dependencies = ["websocket-extensions"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v39w1ig6ps8g55xhz6x1w53apl17ii6kpy0jg9249akgpdvb0k9";
       type = "gem";
-      sha256 = "19bryymqlapsvn9df6q2ba4hvw9dwpp4fjc7i6lwffkadc4snkjy";
     };
-    dependencies = [
-      "actionview"
-      "activesupport"
-      "rack"
-      "rack-test"
-    ];
+    version = "0.6.3";
   };
-  "actionview" = {
-    version = "4.1.12";
+  webmock = {
+    dependencies = ["addressable" "crack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p7hqdxk5359xwp59pcx841fhbnqx01ra98rnwhdyz61nrc6piv3";
       type = "gem";
-      sha256 = "1bv8qifaqa514z64zgfw3r4i120h2swwgpfk79xlrac21q6ps70n";
     };
-    dependencies = [
-      "activesupport"
-      "builder"
-      "erubis"
-    ];
+    version = "1.21.0";
   };
-  "activemodel" = {
-    version = "4.1.12";
+  web-console = {
+    dependencies = ["activemodel" "binding_of_caller" "railties" "sprockets-rails"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13rwps8m76j45iqhggm810j78i8bg4nqzgi8k7amxplik2zm5blf";
       type = "gem";
-      sha256 = "16429dg04s64g834svi7ghq486adr32gxr5p9kac2z6mjp8ggjr3";
     };
-    dependencies = [
-      "activesupport"
-      "builder"
-    ];
+    version = "2.2.1";
   };
-  "activerecord" = {
-    version = "4.1.12";
+  warden = {
+    dependencies = ["rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1iyxw1ms3930dh7vcrfyi4ifpdbkfsr8k7fzjryva0r7k3c71gb7";
       type = "gem";
-      sha256 = "1w3dbmbdk4whm5p1l6d2ky3xpl59lfcr9p3hwd41dz77ynpi5dr5";
     };
-    dependencies = [
-      "activemodel"
-      "activesupport"
-      "arel"
-    ];
+    version = "1.2.4";
   };
-  "activerecord-deprecated_finders" = {
-    version = "1.0.4";
+  virtus = {
+    dependencies = ["axiom-types" "coercible" "descendants_tracker" "equalizer"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06iphwi3c4f7y9i2rvhvaizfswqbaflilziz4dxqngrdysgkn1fk";
       type = "gem";
-      sha256 = "03xplckz7v3nm6inqkwdd44h6gpbpql0v02jc1rz46a38rd6cj6m";
     };
+    version = "1.0.5";
   };
-  "activerecord-session_store" = {
-    version = "0.1.1";
+  version_sorter = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lad9c43w2xfzmva57ia6glpmhyivyk1m79jli42canshvan5v6y";
       type = "gem";
-      sha256 = "15dgx7jjp8iqqzjq2q3a6fsmnhvjwspbsz1s1gd6zp744k6xbrjh";
     };
-    dependencies = [
-      "actionpack"
-      "activerecord"
-      "railties"
-    ];
+    version = "2.0.0";
   };
-  "activeresource" = {
-    version = "4.0.0";
+  uuid = {
+    dependencies = ["macaddr"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gr2mxg27l380wpiy66mgv9wq02myj6m4gmp6c4g1vsbzkh0213v";
       type = "gem";
-      sha256 = "0fc5igjijyjzsl9q5kybkdzhc92zv8wsv0ifb0y90i632jx6d4jq";
     };
-    dependencies = [
-      "activemodel"
-      "activesupport"
-      "rails-observers"
-    ];
+    version = "2.3.8";
   };
-  "activesupport" = {
-    version = "4.1.12";
+  uniform_notifier = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "009z60qx01am7klmrca8pcladrynljra3a9smifn9f81r4dc7q63";
       type = "gem";
-      sha256 = "166jvrmdwayacnrd4z3rs2d6y0av3xnc18k6120ah13c2ipw69hn";
     };
-    dependencies = [
-      "i18n"
-      "json"
-      "minitest"
-      "thread_safe"
-      "tzinfo"
-    ];
+    version = "1.9.0";
   };
-  "acts-as-taggable-on" = {
-    version = "3.5.0";
+  unicorn-worker-killer = {
+    dependencies = ["get_process_mem" "unicorn"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
       type = "gem";
-      sha256 = "0bz0z8dlp3fjzah9y9b6rr9mkidsav9l4hdm51fnq1gd05yv3pr7";
     };
-    dependencies = [
-      "activerecord"
-    ];
+    version = "0.4.4";
   };
-  "addressable" = {
-    version = "2.3.8";
+  unicorn = {
+    dependencies = ["kgio" "rack" "raindrops"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kpg2vikx2hxdyrl45bqcr89a0w59hfw7yn7xh87bmlczi34xds4";
       type = "gem";
-      sha256 = "1533axm85gpz267km9gnfarf9c78g2scrysd6b8yw33vmhkz2km6";
     };
+    version = "4.8.3";
   };
-  "after_commit_queue" = {
-    version = "1.1.0";
+  unf_ext = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b";
       type = "gem";
-      sha256 = "0m7qwbzvxb2xqramf38pzg8ld91s4cy2v0fs26dnmnqr1jf11z4y";
     };
-    dependencies = [
-      "rails"
-    ];
+    version = "0.0.7.1";
   };
-  "annotate" = {
-    version = "2.6.10";
+  unf = {
+    dependencies = ["unf_ext"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
       type = "gem";
-      sha256 = "1wdw9phsv2dndgid3pd8h0hl4zycwy11jc9iz6prwza0xax0i7hg";
     };
-    dependencies = [
-      "activerecord"
-      "rake"
-    ];
+    version = "0.1.4";
   };
-  "arel" = {
-    version = "5.0.1.20140414130214";
+  underscore-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iyspb7s49wpi9cc314gvlkyn45iyfivzxhdw0kql1zrgllhlzfk";
       type = "gem";
-      sha256 = "0dhnc20h1v8ml3nmkxq92rr7qxxpk6ixhwvwhgl2dbw9mmxz0hf9";
     };
+    version = "1.8.3";
   };
-  "asana" = {
-    version = "0.0.6";
+  uglifier = {
+    dependencies = ["execjs" "json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mzs64z3m1b98rh6ssxpqfz9sc87f6ml6906b0m57vydzfgrh1cz";
       type = "gem";
-      sha256 = "1x325pywh3d91qrg916gh8i5g13h4qzgi03zc93x6v4m4rj79dcp";
     };
-    dependencies = [
-      "activeresource"
-    ];
+    version = "2.7.2";
   };
-  "asciidoctor" = {
-    version = "1.5.2";
+  tzinfo = {
+    dependencies = ["thread_safe"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx";
       type = "gem";
-      sha256 = "0hs99bjvnf1nw49nwq62mi5x65x2jlvwqa0xllsi3zfikafsm1y9";
     };
+    version = "1.2.2";
   };
-  "ast" = {
-    version = "2.1.0";
+  twitter-stream = {
+    dependencies = ["eventmachine" "http_parser.rb" "simple_oauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0is81g3xvnjk64sqiaqlh2ziwfryzwvk1yvaniryg0zhppgsyriq";
       type = "gem";
-      sha256 = "102bywfxrv0w3n4s6lg25d7xxshd344sc7ijslqmganj5bany1pk";
     };
+    version = "0.1.16";
   };
-  "astrolabe" = {
-    version = "1.3.1";
+  turbolinks = {
+    dependencies = ["coffee-rails"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ddrx25vvvqxlz4h59lrmjhc2bfwxf4bpicvyhgbpjd48ckj81jn";
       type = "gem";
-      sha256 = "0ybbmjxaf529vvhrj4y8d4jpf87f3hgczydzywyg1d04gggjx7l7";
     };
-    dependencies = [
-      "parser"
-    ];
+    version = "2.5.3";
   };
-  "attr_encrypted" = {
-    version = "1.3.4";
+  tins = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02qarvy17nbwvslfgqam8y6y7479cwmb1a6di9z18hzka4cf90hz";
       type = "gem";
-      sha256 = "1hm2844qm37kflqq5v0x2irwasbhcblhp40qk10m3wlkj4m9wp8p";
     };
-    dependencies = [
-      "encryptor"
-    ];
+    version = "1.6.0";
   };
-  "attr_required" = {
-    version = "1.0.0";
+  tinder = {
+    dependencies = ["eventmachine" "faraday" "faraday_middleware" "hashie" "json" "mime-types" "multi_json" "twitter-stream"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kwj0wd540wb2ws86d3jdva175dx00w2j8lyrvbb6qli3g27byd7";
       type = "gem";
-      sha256 = "0pawa2i7gw9ppj6fq6y288da1ncjpzsmc6kx7z63mjjvypa5q3dc";
     };
+    version = "1.10.1";
   };
-  "autoprefixer-rails" = {
-    version = "5.2.1.2";
+  timfel-krb5-auth = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "105vajc0jkqgcx1wbp0ad262sdry4l1irk7jpaawv8vzfjfqqf5b";
       type = "gem";
-      sha256 = "129kr8hiyzcnj4x3n14nnp7f7scps9v3d690i7fjzpq8i4n9gz8g";
     };
-    dependencies = [
-      "execjs"
-      "json"
-    ];
+    version = "0.8.3";
   };
-  "awesome_print" = {
-    version = "1.2.0";
+  tilt = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00sr3yy7sbqaq7cb2d2kpycajxqf1b1wr1yy33z4bnzmqii0b0ir";
       type = "gem";
-      sha256 = "1k85hckprq0s9pakgadf42k1d5s07q23m3y6cs977i6xmwdivyzr";
     };
+    version = "1.4.1";
   };
-  "axiom-types" = {
-    version = "0.1.1";
+  thread_safe = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr";
       type = "gem";
-      sha256 = "10q3k04pll041mkgy0m5fn2b1lazm6ly1drdbcczl5p57lzi3zy1";
     };
-    dependencies = [
-      "descendants_tracker"
-      "ice_nine"
-      "thread_safe"
-    ];
+    version = "0.3.5";
   };
-  "bcrypt" = {
-    version = "3.1.10";
+  thor = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z";
       type = "gem";
-      sha256 = "15cf7zzlj9b0xcx12jf8fmnpc8g1b0yhxal1yr5p7ny3mrz5pll6";
     };
+    version = "0.19.1";
   };
-  "better_errors" = {
-    version = "1.0.1";
+  thin = {
+    dependencies = ["daemons" "eventmachine" "rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pyc602sa8fqwjyssn9yvf3fqrr14jk7hj9hsjlan1mq4zvim1lf";
       type = "gem";
-      sha256 = "0v0q8bdkqqlcsfqbk4wvc3qnz8an44mgz720v5f11a4nr413mjgf";
     };
-    dependencies = [
-      "coderay"
-      "erubis"
-    ];
+    version = "1.6.4";
   };
-  "binding_of_caller" = {
-    version = "0.7.2";
+  test_after_commit = {
+    dependencies = ["activerecord"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fzg8qan6f0n0ynr594bld2k0rwwxj99yzhiga2f3pkj9ina1abb";
       type = "gem";
-      sha256 = "15jg6dkaq2nzcd602d7ppqbdxw3aji961942w93crs6qw4n6h9yk";
     };
-    dependencies = [
-      "debug_inspector"
-    ];
+    version = "0.4.2";
   };
-  "bootstrap-sass" = {
-    version = "3.3.5";
+  terminal-table = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s6qyj9ir1agbbi32li9c0c34dcl0klyxqif6mxy0dbvq7kqfp8f";
       type = "gem";
-      sha256 = "0gnbl3jfi7x491kb5b2brhqr981wzg6r9sc907anhq9y727d96iv";
     };
-    dependencies = [
-      "autoprefixer-rails"
-      "sass"
-    ];
+    version = "1.5.2";
   };
-  "brakeman" = {
-    version = "3.0.1";
+  term-ansicolor = {
+    dependencies = ["tins"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys";
       type = "gem";
-      sha256 = "0c3pwqhan5qpkmymmp4zpr6j1v3xrvvla9adsd0z9nx1dbc7llry";
     };
-    dependencies = [
-      "erubis"
-      "fastercsv"
-      "haml"
-      "highline"
-      "multi_json"
-      "ruby2ruby"
-      "ruby_parser"
-      "sass"
-      "terminal-table"
-    ];
+    version = "1.3.2";
   };
-  "browser" = {
-    version = "1.0.0";
+  temple = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ysraljv7lkb04z5vdyrkijab7j1jzj1mgz4bj82744dp7d0rhb0";
       type = "gem";
-      sha256 = "03pmj759wngl03lacn8mdhjn6mc5f8zn08mz6k5hq8czgwcwhjxi";
     };
+    version = "0.7.6";
   };
-  "builder" = {
-    version = "3.2.2";
+  teaspoon-jasmine = {
+    dependencies = ["teaspoon"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00wygrv1jm4aj15p1ab9d5fdrj6y83kv26xgp52mx4lp78h2ms9q";
       type = "gem";
-      sha256 = "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2";
     };
+    version = "2.2.0";
   };
-  "byebug" = {
-    version = "6.0.2";
+  teaspoon = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cprz18vgf0jgcggcxf4pwx8jcwbiyj1p0dnck5aavlvaxaic58s";
       type = "gem";
-      sha256 = "0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc";
     };
+    version = "1.0.2";
   };
-  "cal-heatmap-rails" = {
-    version = "0.0.1";
+  task_list = {
+    dependencies = ["html-pipeline"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1iv1fizb04463c4mp4gxd8v0414fhvmiwvwvjby5b9qq79d8zwab";
       type = "gem";
-      sha256 = "07qp74hi1612xgmkfvk1dmc4n79lc7dfkcgqjprnlwb6nkqa940m";
     };
+    version = "1.0.2";
   };
-  "capybara" = {
-    version = "2.4.4";
+  systemu = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
       type = "gem";
-      sha256 = "114k4xi4nfbp3jfbxgwa3fksbwsyibx74gbdqpcgg3dxpmzkaa4f";
     };
-    dependencies = [
-      "mime-types"
-      "nokogiri"
-      "rack"
-      "rack-test"
-      "xpath"
-    ];
+    version = "2.6.5";
   };
-  "capybara-screenshot" = {
-    version = "1.0.11";
+  stringex = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "150adm7rfh6r9b5ra6vk75mswf9m3wwyslcf8f235a08m29fxa17";
       type = "gem";
-      sha256 = "17v1wihr3aqrxhrwswkdpdklj1xsfcaksblh1y8hixvm9bqfyz3y";
     };
-    dependencies = [
-      "capybara"
-      "launchy"
-    ];
+    version = "2.5.2";
   };
-  "carrierwave" = {
-    version = "0.9.0";
+  state_machines-activerecord = {
+    dependencies = ["activerecord" "state_machines-activemodel"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10dplkn4cm49xby8s0sn7wxww4hnxi4dgikfsmhp1rbsa24d76vx";
       type = "gem";
-      sha256 = "1b1av1ancby6brhmypl5k8xwrasd8bd3kqp9ri8kbq7z8nj6k445";
     };
-    dependencies = [
-      "activemodel"
-      "activesupport"
-      "json"
-    ];
+    version = "0.3.0";
   };
-  "celluloid" = {
-    version = "0.16.0";
+  state_machines-activemodel = {
+    dependencies = ["activemodel" "state_machines"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bshcm53v2vfpapvhws1h0dq1h4f3p6bvpdkjpydb52a3m0w2z0y";
       type = "gem";
-      sha256 = "044xk0y7i1xjafzv7blzj5r56s7zr8nzb619arkrl390mf19jxv3";
     };
-    dependencies = [
-      "timers"
-    ];
+    version = "0.3.0";
   };
-  "charlock_holmes" = {
-    version = "0.6.9.4";
+  state_machines = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xg84kdglz0k1pshf2q604zybjpribzcz2b651sc1j27kd86w787";
       type = "gem";
-      sha256 = "1vyzsr3r2bwig9knyhay1m7i828w9x5zhma44iajyrbs1ypvfbg5";
     };
+    version = "0.4.0";
   };
-  "chronic" = {
-    version = "0.10.2";
+  sprockets-rails = {
+    dependencies = ["actionpack" "activesupport" "sprockets"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vsl6ryxdjpp97nl4ghhk1v6p50zh3sx9qv81bhmlffc234r91wn";
       type = "gem";
-      sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
     };
+    version = "2.3.3";
   };
-  "chunky_png" = {
-    version = "1.3.4";
+  sprockets = {
+    dependencies = ["hike" "multi_json" "rack" "tilt"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15818683yz27w4hgywccf27n91azy9a4nmb5qkklzb08k8jw9gp3";
       type = "gem";
-      sha256 = "0n5xhkj3vffihl3h9s8yjzazqaqcm4p1nyxa1w2dk3fkpzvb0wfw";
     };
+    version = "2.12.4";
   };
-  "cliver" = {
-    version = "0.3.2";
+  spring-commands-teaspoon = {
+    dependencies = ["spring"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g7n4m2s9d0frh7y1xibzpphqajfnx4fvgfc66nh545dd91w2nqz";
       type = "gem";
-      sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
     };
+    version = "0.0.2";
   };
-  "coderay" = {
-    version = "1.1.0";
+  spring-commands-spinach = {
+    dependencies = ["spring"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "138jardqyj96wz68njdgy55qjbpl2d0g8bxbkz97ndaz3c2bykv9";
       type = "gem";
-      sha256 = "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s";
     };
-  };
-  "coercible" = {
     version = "1.0.0";
+  };
+  spring-commands-rspec = {
+    dependencies = ["spring"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
       type = "gem";
-      sha256 = "1p5azydlsz0nkxmcq0i1gzmcfq02lgxc4as7wmf47j1c6ljav0ah";
     };
-    dependencies = [
-      "descendants_tracker"
-    ];
+    version = "1.0.4";
   };
-  "coffee-rails" = {
-    version = "4.1.0";
+  spring = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xvz2x6nvza5i53p7mddnf11j2wshqmbaphi6ngd6nar8v35y0k1";
       type = "gem";
-      sha256 = "0p3zhs44gsy1p90nmghihzfyl7bsk8kv6j3q7rj3bn74wg8w7nqs";
     };
-    dependencies = [
-      "coffee-script"
-      "railties"
-    ];
+    version = "1.3.6";
   };
-  "coffee-script" = {
-    version = "2.4.1";
+  spinach-rails = {
+    dependencies = ["capybara" "railties" "spinach"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nfacfylkncfgi59g2wga6m4nzdcjqb8s50cax4nbx362ap4bl70";
       type = "gem";
-      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
     };
-    dependencies = [
-      "coffee-script-source"
-      "execjs"
-    ];
+    version = "0.2.1";
   };
-  "coffee-script-source" = {
-    version = "1.9.1.1";
+  spinach = {
+    dependencies = ["colorize" "gherkin-ruby" "json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0phfjs4iw2iqxdaljzwk6qxmi2x86pl3hirmpgw2pgfx76wfx688";
       type = "gem";
-      sha256 = "1arfrwyzw4sn7nnaq8jji5sv855rp4c5pvmzkabbdgca0w1cxfq5";
     };
+    version = "0.8.10";
   };
-  "colored" = {
-    version = "1.2";
+  slop = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n";
       type = "gem";
-      sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx";
     };
+    version = "3.6.0";
   };
-  "colorize" = {
-    version = "0.5.8";
+  slim = {
+    dependencies = ["temple" "tilt"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1szs71hh0msm5gj6qbcxw44m3hqnwybx4yh02scwixnwg576058k";
       type = "gem";
-      sha256 = "1rfzvscnk2js87zzwjgg2lk6h6mrv9448z5vx3b8vnm9yrb2qg8g";
     };
+    version = "3.0.6";
   };
-  "connection_pool" = {
-    version = "2.2.0";
+  slack-notifier = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08z6fv186yw1nrpl6zwp3lwqksin145aa1jv6jf00bnv3sicliiz";
       type = "gem";
-      sha256 = "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy";
     };
+    version = "1.2.1";
   };
-  "coveralls" = {
-    version = "0.8.2";
+  six = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bhapiyjh5r5qjpclfw8i65plvy6k2q4azr5xir63xqglr53viw3";
       type = "gem";
-      sha256 = "0ds63q3g8zp23813hsvjjqpjglwr76ld4zqbbdhc9ads9l988axz";
     };
-    dependencies = [
-      "json"
-      "rest-client"
-      "simplecov"
-      "term-ansicolor"
-      "thor"
-    ];
+    version = "0.2.0";
   };
-  "crack" = {
-    version = "0.4.2";
+  sinatra = {
+    dependencies = ["rack" "rack-protection" "tilt"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hhmwqc81ram7lfwwziv0z70jh92sj1m7h7s9fr0cn2xq8mmn8l7";
       type = "gem";
-      sha256 = "1il94m92sz32nw5i6hdq14f1a2c3s9hza9zn6l95fvqhabq38k7a";
     };
-    dependencies = [
-      "safe_yaml"
-    ];
+    version = "1.4.6";
   };
-  "creole" = {
-    version = "0.3.8";
+  simplecov-html = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf";
       type = "gem";
-      sha256 = "1wwqk5ij4r5rhzbzhnpqwbn9ck56qgyjs02pjmi2wh46gs8dmkl8";
     };
+    version = "0.10.0";
   };
-  "d3_rails" = {
-    version = "3.5.6";
+  simplecov = {
+    dependencies = ["docile" "json" "simplecov-html"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4";
       type = "gem";
-      sha256 = "0faz49chi08zxqwwdzzcb468gmcfmpv1s58y4c431kpa6kyh8qsm";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "0.10.0";
   };
-  "daemons" = {
-    version = "1.2.3";
+  simple_oauth = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bb06p88xsdw4fxll1ikv5i5k58sl6y323ss0wp1hqjm3xw1jgvj";
       type = "gem";
-      sha256 = "0b839hryy9sg7x3knsa1d6vfiyvn0mlsnhsb6an8zsalyrz1zgqg";
     };
+    version = "0.1.9";
   };
-  "database_cleaner" = {
-    version = "1.4.1";
+  sidekiq-cron = {
+    dependencies = ["redis-namespace" "rufus-scheduler" "sidekiq"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xnbvh8kjv6954vsiwfcpp7bn8sgpwvnyapnq7b94w8h7kj3ykqy";
       type = "gem";
-      sha256 = "0n5r7kvsmknk876v3scdphfnvllr9157fa5q7j5fczg8j5qm6kf0";
     };
+    version = "0.4.0";
   };
-  "debug_inspector" = {
-    version = "0.0.2";
+  sidekiq = {
+    dependencies = ["concurrent-ruby" "connection_pool" "json" "redis"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x7jfc2va0x6fcfffdf0wdiyk4krjw8053jzwffa63wkqr5jvg3y";
       type = "gem";
-      sha256 = "109761g00dbrw5q0dfnbqg8blfm699z4jj70l4zrgf9mzn7ii50m";
     };
+    version = "4.0.1";
   };
-  "default_value_for" = {
-    version = "3.0.1";
+  shoulda-matchers = {
+    dependencies = ["activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0";
       type = "gem";
-      sha256 = "1z4lrba4y1c3y0rxw8321qbwsb3nr6c2igrpksfvz93yhc9m6xm0";
     };
-    dependencies = [
-      "activerecord"
-    ];
+    version = "2.8.0";
   };
-  "descendants_tracker" = {
-    version = "0.0.4";
+  sham_rack = {
+    dependencies = ["rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zs6hpgg87x5jrykjxgfp2i7m5aja53s5kamdhxam16wki1hid3i";
       type = "gem";
-      sha256 = "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79";
     };
-    dependencies = [
-      "thread_safe"
-    ];
+    version = "1.3.6";
   };
-  "devise" = {
-    version = "3.5.2";
+  sexp_processor = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gxlcpg81wfjf5gpggf8h6l2dbq3ikgavbrr2yfw3m2vqy88yjg2";
       type = "gem";
-      sha256 = "1wj88i2hyhcnifj606vzgf2q68yhcpyrsx7bc11h93cma51z59c3";
     };
-    dependencies = [
-      "bcrypt"
-      "orm_adapter"
-      "railties"
-      "responders"
-      "thread_safe"
-      "warden"
-    ];
+    version = "4.6.0";
   };
-  "devise-async" = {
-    version = "0.9.0";
+  settingslogic = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ria5zcrk1nf0b9yia15mdpzw0dqr6wjpbj8dsdbbps81lfsj9ar";
       type = "gem";
-      sha256 = "11llg7ggzpmg4lb9gh4sx55spvp98sal5r803gjzamps9crfq6mm";
     };
-    dependencies = [
-      "devise"
-    ];
+    version = "2.0.9";
   };
-  "devise-two-factor" = {
-    version = "2.0.0";
+  sentry-raven = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h0w2ip02zcd3krpddn54vssd7asnbj823r4mlzzqpp28q3r3mcm";
       type = "gem";
-      sha256 = "1xzaagz6fr9cbq7cj8g7sahx6sxxsc1jyja462caa0gjang9yrhr";
     };
-    dependencies = [
-      "activesupport"
-      "attr_encrypted"
-      "devise"
-      "railties"
-      "rotp"
-    ];
+    version = "0.15.4";
   };
-  "diff-lcs" = {
-    version = "1.2.5";
+  select2-rails = {
+    dependencies = ["thor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ni2k74n73y3gv56gs37gkjlh912szjf6k9j483wz41m3xvlz7fj";
       type = "gem";
-      sha256 = "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1";
     };
+    version = "3.5.9.3";
   };
-  "diffy" = {
-    version = "3.0.7";
+  seed-fu = {
+    dependencies = ["activerecord" "activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11xja82yxir1kwccrzng29h7w911i9j0xj2y7y949yqnw91v12vw";
       type = "gem";
-      sha256 = "0il0ri511g9rm88qbvncbzgwc6wk6265hmnf7grcczmrs1z49vl0";
     };
+    version = "2.3.5";
   };
-  "docile" = {
-    version = "1.1.5";
+  sdoc = {
+    dependencies = ["json" "rdoc"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17l8qk0ld47z4h5avcnylvds8nc6dp25zc64w23z8li2hs341xf2";
       type = "gem";
-      sha256 = "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx";
     };
+    version = "0.3.20";
   };
-  "domain_name" = {
-    version = "0.5.24";
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fk43bzwn816qj1ksiicm2i1kmzv5675cmnvk57kmfmi4rfsyjpy";
       type = "gem";
-      sha256 = "1xjm5arwc35wryn0hbfldx2pfhwx5qilkv7yms4kz0jri3m6mgcc";
     };
-    dependencies = [
-      "unf"
-    ];
+    version = "0.6.0";
   };
-  "doorkeeper" = {
-    version = "2.1.4";
+  sass-rails = {
+    dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f6357vw944w2ayayqmz8ai9myl6xbnry06sx5b5ms4r9lny8hj8";
       type = "gem";
-      sha256 = "00akgshmz85kxvf35qsag80qbxzjvmkmksjy96zx44ckianxwahl";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "5.0.4";
   };
-  "dropzonejs-rails" = {
-    version = "0.7.1";
+  sass = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04rpdcp258arh2wgdk9shbqnzd6cbbbpi3wpi9a0wby8awgpxmyf";
       type = "gem";
-      sha256 = "0spfjkji6v98996bc320sx3ar3sflkpbjpzwg6cvbycwfn29fjfy";
     };
-    dependencies = [
-      "rails"
-    ];
+    version = "3.4.20";
   };
-  "email_reply_parser" = {
-    version = "0.5.8";
+  sanitize = {
+    dependencies = ["nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xsv6xqrlz91rd8wifjknadbl3z5h6qphmxy0hjb189qbdghggn3";
       type = "gem";
-      sha256 = "0k2p229mv7xn7q627zwmvhrcvba4b9m70pw2jfjm6iimg2vmf22r";
     };
+    version = "2.1.0";
   };
-  "email_spec" = {
-    version = "1.6.0";
+  safe_yaml = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
       type = "gem";
-      sha256 = "00p1cc69ncrgg7m45va43pszip8anx5735w1lsb7p5ygkyw8nnpv";
     };
-    dependencies = [
-      "launchy"
-      "mail"
-    ];
+    version = "1.0.4";
   };
-  "encryptor" = {
-    version = "1.3.0";
+  rugged = {
+    version = "0.24.0b13";
     source = {
       type = "gem";
-      sha256 = "04wqqda081h7hmhwjjx1yqxprxjk8s5jgv837xqv1bpxiv7f4v1y";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v0cvdw8cgy1hf5h3cx796zpxhbad8d5cm50nykyhwjc00q80zrr";
     };
   };
-  "enumerize" = {
-    version = "0.7.0";
+  rufus-scheduler = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04bmvvvri7ni7dvlq3gi1y553f6rp6bw2kmdfp9ny5bh3l7qayrh";
       type = "gem";
-      sha256 = "0rg6bm3xv7p4i5gs4796v8gc49mzakphwv4kdbhn0wjm690h6226";
     };
-    dependencies = [
-      "activesupport"
-    ];
+    version = "3.1.10";
   };
-  "equalizer" = {
-    version = "0.0.11";
+  rubypants = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vpdkrc4c8qhrxph41wqwswl28q5h5h994gy4c1mlrckqzm3hzph";
       type = "gem";
-      sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
     };
+    version = "0.2.0";
   };
-  "erubis" = {
-    version = "2.7.0";
+  rubyntlm = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04l8686hl0829x4acsnbz0licf8n6794p7shz8iyahin1jnqg3d7";
       type = "gem";
-      sha256 = "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3";
     };
+    version = "0.5.2";
   };
-  "escape_utils" = {
-    version = "0.2.4";
+  ruby_parser = {
+    dependencies = ["sexp_processor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rip6075b4k5a7s8w2klwc3jaqx31h69k004ac5nhl8y0ja92qvz";
       type = "gem";
-      sha256 = "0mg5pgaa02w1bxh0166d367f2ll6fizyrs5dsirrcnw4g17ba54g";
     };
+    version = "3.7.2";
   };
-  "eventmachine" = {
-    version = "1.0.8";
+  ruby2ruby = {
+    dependencies = ["ruby_parser" "sexp_processor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kmc0503s9mqnjyypx51wsi6zz9zj550ch43rag23wpj4qd6i6pm";
       type = "gem";
-      sha256 = "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp";
     };
+    version = "2.2.0";
   };
-  "excon" = {
-    version = "0.45.4";
+  ruby-saml = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "151jbak16y87dbj3ma2nc03rh37z7lixcwgaqahncq80rgnv45a8";
       type = "gem";
-      sha256 = "1shb4g3dhsfkywgjv6123yrvp2c8bvi8hqmq47iqa5lp72sn4b4w";
     };
+    version = "1.1.1";
   };
-  "execjs" = {
-    version = "2.6.0";
+  ruby-progressbar = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hynaavnqzld17qdx9r7hfw00y16ybldwq730zrqfszjwgi59ivi";
       type = "gem";
-      sha256 = "0grlxwiccbnflxs30r3h7g23xnps5knav1jyqkk3anvm8363ifjw";
     };
+    version = "1.7.5";
   };
-  "expression_parser" = {
-    version = "0.9.0";
+  ruby-fogbugz = {
+    dependencies = ["crack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jj0gpkycbrivkh2q3429vj6mbgx6axxisg69slj3c4mgvzfgchm";
       type = "gem";
-      sha256 = "1938z3wmmdabqxlh5d5c56xfg1jc6z15p7zjyhvk7364zwydnmib";
     };
+    version = "0.2.1";
   };
-  "factory_girl" = {
-    version = "4.3.0";
+  rubocop = {
+    dependencies = ["astrolabe" "parser" "powerpack" "rainbow" "ruby-progressbar" "tins"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1grqda2fdknm43zyagh8gcmnhjkypyfw98q92hmvprprwghkq2sg";
       type = "gem";
-      sha256 = "13z20a4b7z1c8vbz0qz5ranssdprldwvwlgjmn38x311sfjmp9dz";
     };
-    dependencies = [
-      "activesupport"
-    ];
+    version = "0.35.1";
   };
-  "factory_girl_rails" = {
-    version = "4.3.0";
+  rspec-support = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cyagig8slxjas8mbg5f8bl240b8zgr8mnjsvrznag1fwpkh4h27";
       type = "gem";
-      sha256 = "1jj0yl6mfildb4g79dwgc1q5pv2pa65k9b1ml43mi8mg62j8mrhz";
     };
-    dependencies = [
-      "factory_girl"
-      "railties"
-    ];
+    version = "3.3.0";
   };
-  "faraday" = {
-    version = "0.8.10";
+  rspec-rails = {
+    dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m66n9p3a7d3fmrzkbh8312prb6dhrgmp53g1amck308ranasv2a";
       type = "gem";
-      sha256 = "093hrmrx3jn9969q6c9cjms2k73aqwhs03kij378kg1d5izr4r6f";
     };
-    dependencies = [
-      "multipart-post"
-    ];
+    version = "3.3.3";
   };
-  "faraday_middleware" = {
-    version = "0.10.0";
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lfbzscmpyixlbapxmhy2s69596vs1z00lv590l51hgdw70z92vg";
       type = "gem";
-      sha256 = "0nxia26xzy8i56qfyz1bg8dg9yb26swpgci8n5jry8mh4bnx5r5h";
     };
-    dependencies = [
-      "faraday"
-    ];
+    version = "3.3.2";
   };
-  "fastercsv" = {
-    version = "1.5.5";
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d0b5hpkxlr9f3xpsbhvl3irnk4smmycx2xnmc8qv3pqaa7mb7ah";
       type = "gem";
-      sha256 = "1df3vfgw5wg0s405z0pj0rfcvnl9q6wak7ka8gn0xqg4cag1k66h";
     };
+    version = "3.3.1";
   };
-  "ffaker" = {
-    version = "2.0.0";
+  rspec-core = {
+    dependencies = ["rspec-support"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw5qi936j6nz9fixi2mwy03f406761cd72bzyvd61pr854d7hy1";
       type = "gem";
-      sha256 = "19fnbbsw87asyb1hvkr870l2yldah2jcjb8074pgyrma5lynwmn0";
     };
+    version = "3.3.2";
   };
-  "ffi" = {
-    version = "1.9.10";
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bn5zs71agc0zyns2r3c8myi5bxw3q7xnzp7f3v5b7hbil1qym4r";
       type = "gem";
-      sha256 = "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj";
     };
+    version = "3.3.0";
   };
-  "fission" = {
-    version = "0.5.0";
+  rqrcode-rails3 = {
+    dependencies = ["rqrcode"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i28rwmj24ssk91chn0g7qsnvn003y3s5a7jsrg3w4l5ckr841bg";
       type = "gem";
-      sha256 = "09pmp1j1rr8r3pcmbn2na2ls7s1j9ijbxj99xi3a8r6v5xhjdjzh";
     };
-    dependencies = [
-      "CFPropertyList"
-    ];
+    version = "0.1.7";
   };
-  "flowdock" = {
+  rqrcode = {
+    dependencies = ["chunky_png"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "188n1mvc7klrlw30bai16sdg4yannmy7cz0sg0nvm6f1kjx5qflb";
+      type = "gem";
+    };
     version = "0.7.0";
+  };
+  rouge = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wp8as9ypdy18kdj9h70kny1rdfq71mr8cj2bpahr9vxjjvjasqz";
       type = "gem";
-      sha256 = "0wzqj35mn2x2gcy88y00h3jz57ldkkidkwy63jxvmqdlz759pds5";
     };
-    dependencies = [
-      "httparty"
-      "multi_json"
-    ];
+    version = "1.10.1";
   };
-  "fog" = {
-    version = "1.25.0";
+  rotp = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nzsc9hfxijnyzjbv728ln9dm80bc608chaihjdk63i2wi4m529g";
       type = "gem";
-      sha256 = "0zncds3qj5n3i780y6y6sy5h1gg0kwiyiirxyisbd8p0ywwr8bc3";
     };
-    dependencies = [
-      "fog-brightbox"
-      "fog-core"
-      "fog-json"
-      "fog-profitbricks"
-      "fog-radosgw"
-      "fog-sakuracloud"
-      "fog-softlayer"
-      "fog-terremark"
-      "fog-vmfusion"
-      "fog-voxel"
-      "fog-xml"
-      "ipaddress"
-      "nokogiri"
-      "opennebula"
-    ];
+    version = "2.1.1";
   };
-  "fog-brightbox" = {
-    version = "0.9.0";
+  rinku = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jh6nys332brph55i6x6cil6swm086kxjw34wq131nl6mwryqp7b";
       type = "gem";
-      sha256 = "01a6ydv7y02zbid8s9mqcxpc0k0hig39ap7mrwj9vp6z7mm9dydv";
     };
-    dependencies = [
-      "fog-core"
-      "fog-json"
-      "inflecto"
-    ];
+    version = "1.7.3";
   };
-  "fog-core" = {
-    version = "1.32.1";
+  rest-client = {
+    dependencies = ["http-cookie" "mime-types" "netrc"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m8z0c4yf6w47iqz6j2p7x1ip4qnnzvhdph9d5fgx081cvjly3p7";
       type = "gem";
-      sha256 = "0pnm3glgha2hxmhjvgp7f088vzdgv08q8c6w8y9c2cys3b4fx83m";
     };
-    dependencies = [
-      "builder"
-      "excon"
-      "formatador"
-      "mime-types"
-      "net-scp"
-      "net-ssh"
-    ];
+    version = "1.8.0";
   };
-  "fog-json" = {
-    version = "1.0.2";
+  responders = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i00bxp8fa67rzl50wfiaw16w21j5d5gwjjkdiwr0sw9q6ixmpz1";
       type = "gem";
-      sha256 = "0advkkdjajkym77r3c0bg2rlahl2akj0vl4p5r273k2qmi16n00r";
     };
-    dependencies = [
-      "fog-core"
-      "multi_json"
-    ];
+    version = "2.1.1";
   };
-  "fog-profitbricks" = {
-    version = "0.0.5";
+  rerun = {
+    dependencies = ["listen"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0av239bpmy55fdx4qaw9n71aapjy2myr51h5plzjxsyr0fdwn1xq";
       type = "gem";
-      sha256 = "154sqs2dcmvg21v4m3fj8f09z5i70sq8a485v6rdygsffs8xrycn";
     };
-    dependencies = [
-      "fog-core"
-      "fog-xml"
-      "nokogiri"
-    ];
+    version = "0.11.0";
   };
-  "fog-radosgw" = {
-    version = "0.0.4";
+  request_store = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01rxi2hw84y133z0r91jns4aaywd8d83wjq0xgb42iaicf0a90p9";
       type = "gem";
-      sha256 = "1pxbvmr4dsqx4x2klwnciyhki4r5ryr9y0hi6xmm3n6fdv4ii7k3";
     };
-    dependencies = [
-      "fog-core"
-      "fog-json"
-      "fog-xml"
-    ];
+    version = "1.2.1";
   };
-  "fog-sakuracloud" = {
-    version = "1.0.1";
+  redis-store = {
+    dependencies = ["redis"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gf462p0wx4hn7m1m8ghs701n6xx0ijzm5cff9xfagd2s6va145m";
       type = "gem";
-      sha256 = "1s16b48kh7y03hjv74ccmlfwhqqq7j7m4k6cywrgbyip8n3258n8";
     };
-    dependencies = [
-      "fog-core"
-      "fog-json"
-    ];
+    version = "1.1.7";
   };
-  "fog-softlayer" = {
-    version = "0.4.7";
+  redis-rails = {
+    dependencies = ["redis-actionpack" "redis-activesupport" "redis-store"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0igww7hb58aq74mh50dli3zjg78b54y8nhd0h1h9vz4vgjd4q8m7";
       type = "gem";
-      sha256 = "0fgfbhqnyp8ywymvflflhvbns54d1432x57pgpnfy8k1cxvhv9b8";
     };
-    dependencies = [
-      "fog-core"
-      "fog-json"
-    ];
+    version = "4.0.0";
   };
-  "fog-terremark" = {
-    version = "0.1.0";
+  redis-rack = {
+    dependencies = ["rack" "redis-store"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y1mxx8gn0krdrpwllv7fqsbvki1qjnb2dz8b4q9gwc326829gk8";
       type = "gem";
-      sha256 = "01lfkh9jppj0iknlklmwyb7ym3bfhkq58m3absb6rf5a5mcwi3lf";
     };
-    dependencies = [
-      "fog-core"
-      "fog-xml"
-    ];
+    version = "1.5.0";
   };
-  "fog-vmfusion" = {
-    version = "0.1.0";
+  redis-namespace = {
+    dependencies = ["redis"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rp8gfkznfxqzxk9s976k71jnljkh0clkrhnp6vgx46s5yhj9g25";
       type = "gem";
-      sha256 = "0g0l0k9ylxk1h9pzqr6h2ba98fl47lpp3j19lqv4jxw0iw1rqxn4";
     };
-    dependencies = [
-      "fission"
-      "fog-core"
-    ];
+    version = "1.5.2";
   };
-  "fog-voxel" = {
-    version = "0.1.0";
+  redis-activesupport = {
+    dependencies = ["activesupport" "redis-store"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10y3kybz21n2z11478sf0cp4xzclvxf0b428787brmgpc6i7p7zg";
       type = "gem";
-      sha256 = "10skdnj59yf4jpvq769njjrvh2l0wzaa7liva8n78qq003mvmfgx";
     };
-    dependencies = [
-      "fog-core"
-      "fog-xml"
-    ];
+    version = "4.1.5";
   };
-  "fog-xml" = {
-    version = "0.1.2";
+  redis-actionpack = {
+    dependencies = ["actionpack" "redis-rack" "redis-store"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jjl6dhhpdapdaywq5iqz7z36mwbw0cn0m30wcc5wcbv7xmiiygw";
       type = "gem";
-      sha256 = "1576sbzza47z48p0k9h1wg3rhgcvcvdd1dfz3xx1cgahwr564fqa";
     };
-    dependencies = [
-      "fog-core"
-      "nokogiri"
-    ];
+    version = "4.0.1";
   };
-  "font-awesome-rails" = {
-    version = "4.4.0.0";
+  redis = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0255w9izzs04hw9wivn05yqiwi34w28ylxs0xvpmwc1vrh18fwcl";
       type = "gem";
-      sha256 = "0igrwlkgpggpfdy3f4kzsz22m14rxx5xnvz3if16czqjlkq4kbbx";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "3.2.2";
   };
-  "foreman" = {
-    version = "0.78.0";
+  redcarpet = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk";
       type = "gem";
-      sha256 = "1caz8mi7gq1hs4l1flcyyw1iw1bdvdbhppsvy12akr01k3s17xaq";
     };
-    dependencies = [
-      "thor"
-    ];
+    version = "3.3.3";
   };
-  "formatador" = {
-    version = "0.2.5";
+  recaptcha = {
+    dependencies = ["json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190qqklirmi31s6ih7png4h9xmx1p5h2n5fi45z90y8hsp5w1sh1";
       type = "gem";
-      sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
     };
+    version = "1.0.2";
   };
-  "fuubar" = {
-    version = "2.0.0";
+  rdoc = {
+    dependencies = ["json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v9k4sp5yzj2bshngckdvivj6bszciskk1nd2r3wri2ygs7vgqm8";
       type = "gem";
-      sha256 = "0xwqs24y8s73aayh39si17kccsmr0bjgmi6jrjyfp7gkjb6iyhpv";
     };
-    dependencies = [
-      "rspec"
-      "ruby-progressbar"
-    ];
+    version = "3.12.2";
   };
-  "gemnasium-gitlab-service" = {
-    version = "0.2.6";
+  rblineprof = {
+    dependencies = ["debugger-ruby_core_source"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m58kdjgncwf0h1qry3qk5h4bg8sj0idykqqijqcrr09mxfd9yc6";
       type = "gem";
-      sha256 = "1qv7fkahmqkah3770ycrxd0x2ais4z41hb43a0r8q8wcdklns3m3";
     };
-    dependencies = [
-      "rugged"
-    ];
+    version = "0.3.6";
   };
-  "gemojione" = {
-    version = "2.0.1";
+  rb-inotify = {
+    dependencies = ["ffi"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9";
       type = "gem";
-      sha256 = "0655l0vgs0hbz11s2nlpwwj7df66cxlvv94iz7mhf04qrr5mi26q";
     };
-    dependencies = [
-      "json"
-    ];
+    version = "0.9.5";
   };
-  "get_process_mem" = {
-    version = "0.2.0";
+  rb-fsevent = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hq57by28iv0ijz8pk9ynih0xdg7vnl1010xjcijfklrcv89a1j2";
       type = "gem";
-      sha256 = "025f7v6bpbgsa2nr0hzv2riggj8qmzbwcyxfgjidpmwh5grh7j29";
     };
+    version = "0.9.6";
   };
-  "gherkin-ruby" = {
-    version = "0.3.2";
+  raphael-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sjiaymvfn4al5dr1pza5i142byan0fxnj4rymziyql2bzvdm2bc";
       type = "gem";
-      sha256 = "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1";
     };
+    version = "2.1.2";
   };
-  "github-markup" = {
-    version = "1.3.3";
+  rake = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
       type = "gem";
-      sha256 = "01r901wcgn0gs0n9h684gs5n90y1vaj9lxnx4z5ig611jwa43ivq";
     };
+    version = "10.5.0";
   };
-  "gitlab-flowdock-git-hook" = {
-    version = "1.0.1";
+  raindrops = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hv0xhr762axywr937czi92fs0x3zk7k22vg6f4i7rr8d05sp560";
       type = "gem";
-      sha256 = "1s3a10cdbh4xy732b92zcsm5zyc1lhi5v29d76j8mwbqmj11a2p8";
     };
-    dependencies = [
-      "flowdock"
-      "gitlab-grit"
-      "multi_json"
-    ];
+    version = "0.15.0";
   };
-  "gitlab-grit" = {
-    version = "2.7.3";
+  rainbow = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dsnzfjiih2w8npsjab3yx1ssmmvmgjkbxny0i9yzrdy7whfw7b4";
       type = "gem";
-      sha256 = "0nv8shx7w7fww8lf5a2rbvf7bq173rllm381m6x7g1i0qqc68q1b";
     };
-    dependencies = [
-      "charlock_holmes"
-      "diff-lcs"
-      "mime-types"
-      "posix-spawn"
-    ];
+    version = "2.0.0";
   };
-  "gitlab-linguist" = {
-    version = "3.0.1";
+  railties = {
+    dependencies = ["actionpack" "activesupport" "rake" "thor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07vmyrppa1x80whdjxhjij93qh9wvnmnxpsgn6fr9x2lqmzdyq5l";
       type = "gem";
-      sha256 = "14ydmxmdm7j56nwlcf4ai08mpc7d3mbfhida52p1zljshbvda5ib";
     };
-    dependencies = [
-      "charlock_holmes"
-      "escape_utils"
-      "mime-types"
-    ];
+    version = "4.2.5.1";
   };
-  "gitlab_emoji" = {
-    version = "0.1.1";
+  rails-html-sanitizer = {
+    dependencies = ["loofah"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "138fd86kv073zqfx0xifm646w6bgw2lr8snk16lknrrfrss8xnm7";
       type = "gem";
-      sha256 = "13jj6ah88x8y6cr5c82j78a4mi5g88a7vpqf617zpcdiabmr0gl6";
     };
-    dependencies = [
-      "gemojione"
-    ];
+    version = "1.0.3";
   };
-  "gitlab_git" = {
-    version = "7.2.15";
+  rails-dom-testing = {
+    dependencies = ["activesupport" "nokogiri" "rails-deprecated_sanitizer"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v8jl6803mbqpxh4hn0szj081q1a3ap0nb8ni0qswi7z4la844v8";
       type = "gem";
-      sha256 = "1afa645sj322sfy4h6hksi78m87qgvslmf8rgzlqsa4b6zf4w4x2";
     };
-    dependencies = [
-      "activesupport"
-      "charlock_holmes"
-      "gitlab-linguist"
-      "rugged"
-    ];
+    version = "1.0.7";
   };
-  "gitlab_meta" = {
-    version = "7.0";
+  rails-deprecated_sanitizer = {
+    dependencies = ["activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qxymchzdxww8bjsxj05kbf86hsmrjx40r41ksj0xsixr2gmhbbj";
       type = "gem";
-      sha256 = "14vahv7gblcypbvip845sg3lvawf3kij61mkxz5vyfcv23niqvp9";
     };
+    version = "1.0.3";
   };
-  "gitlab_omniauth-ldap" = {
-    version = "1.2.1";
+  rails = {
+    dependencies = ["actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03j6hfsqdl0bay59m4qjj2081s4vnhqagpl14qpm4wfrqrgpkcqb";
       type = "gem";
-      sha256 = "1vbdyi57vvlrigyfhmqrnkw801x57fwa3gxvj1rj2bn9ig5186ri";
     };
-    dependencies = [
-      "net-ldap"
-      "omniauth"
-      "pyu-ruby-sasl"
-      "rubyntlm"
-    ];
+    version = "4.2.5.1";
   };
-  "gollum-grit_adapter" = {
-    version = "1.0.0";
+  rack-test = {
+    dependencies = ["rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h6x5jq24makgv2fq5qqgjlrk74dxfy62jif9blk43llw8ib2q7z";
       type = "gem";
-      sha256 = "02c5qfq0s0kx2ifnpbnbgz6258fl7rchzzzc7vpx72shi8gbpac7";
     };
-    dependencies = [
-      "gitlab-grit"
-    ];
+    version = "0.6.3";
   };
-  "gollum-lib" = {
-    version = "4.0.3";
+  rack-protection = {
+    dependencies = ["rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cvb21zz7p9wy23wdav63z5qzfn4nialik22yqp6gihkgfqqrh5r";
       type = "gem";
-      sha256 = "1f8jzxza1ckpyzyk137rqd212vfk2ac2mn1pp1wi880s4ynahyky";
     };
-    dependencies = [
-      "github-markup"
-      "gollum-grit_adapter"
-      "nokogiri"
-      "rouge"
-      "sanitize"
-      "stringex"
-    ];
+    version = "1.5.3";
   };
-  "gon" = {
-    version = "5.0.4";
+  rack-oauth2 = {
+    dependencies = ["activesupport" "attr_required" "httpclient" "multi_json" "rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1szfnb74p5s7k0glpmiv16rfl4wx9mnrr7riapgpbcx163zzkxad";
       type = "gem";
-      sha256 = "0gdl6zhj5k8ma3mwm00kjfa12w0l6br9kyyxvfj90cw9irfi049r";
     };
-    dependencies = [
-      "actionpack"
-      "json"
-    ];
+    version = "1.2.1";
   };
-  "grape" = {
-    version = "0.6.1";
+  rack-mount = {
+    dependencies = ["rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09a1qfaxxsll1kbgz7z0q0nr48sfmfm7akzaviis5bjpa5r00ld2";
       type = "gem";
-      sha256 = "1sjlk0pmgqbb3piz8yb0xjcm7liimrr17y5xflm40amv36pg2gz8";
     };
-    dependencies = [
-      "activesupport"
-      "builder"
-      "hashie"
-      "multi_json"
-      "multi_xml"
-      "rack"
-      "rack-accept"
-      "rack-mount"
-      "virtus"
-    ];
+    version = "0.8.3";
   };
-  "grape-entity" = {
-    version = "0.4.8";
+  rack-cors = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sz9d9gjmv2vjl3hddzk269hb1k215k8sp37gicphx82h3chk1kw";
+      type = "gem";
+    };
+    version = "0.4.0";
+  };
+  rack-attack = {
+    dependencies = ["rack"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ihic8ar2ddfv15p5gia8nqzsl3y7iayg5v4rmg72jlvikgsabls";
       type = "gem";
-      sha256 = "0hxghs2p9ncvdwhp6dwr1a74g552c49dd0jzy0szp4pg2xjbgjk8";
     };
-    dependencies = [
-      "activesupport"
-      "multi_json"
-    ];
+    version = "4.3.1";
   };
-  "growl" = {
+  rack-accept = {
+    dependencies = ["rack"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18jdipx17b4ki33cfqvliapd31sbfvs4mv727awynr6v95a7n936";
+      type = "gem";
+    };
+    version = "0.4.5";
+  };
+  rack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5";
+      type = "gem";
+    };
+    version = "1.6.4";
+  };
+  quiet_assets = {
+    dependencies = ["railties"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q4azw4j1xsgd7qwcig110mfdn1fm0y34y87zw9j9v187xr401b1";
+      type = "gem";
+    };
     version = "1.0.3";
+  };
+  pyu-ruby-sasl = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rcpjiz9lrvyb3rd8k8qni0v4ps08psympffyldmmnrqayyad0sn";
       type = "gem";
-      sha256 = "0s0y7maljnalpbv2q1j5j5hvb4wcc31y9af0n7x1q2l0fzxgc9n9";
     };
+    version = "0.0.3.3";
   };
-  "guard" = {
-    version = "2.13.0";
+  pry-rails = {
+    dependencies = ["pry"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a2iinvabis2xmv0z7z7jmh7bbkkngxj2qixfdg5m6qj9x8k1kx6";
       type = "gem";
-      sha256 = "0p3ndfmi6sdw55c7j19pyb2ymlby1vyxlp0k47366im1vi70b7gf";
     };
-    dependencies = [
-      "formatador"
-      "listen"
-      "lumberjack"
-      "nenv"
-      "notiffany"
-      "pry"
-      "shellany"
-      "thor"
-    ];
+    version = "0.3.4";
   };
-  "guard-rspec" = {
-    version = "4.2.10";
+  pry = {
+    dependencies = ["coderay" "method_source" "slop"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x78rvp69ws37kwig18a8hr79qn36vh8g1fn75p485y3b3yiqszg";
       type = "gem";
-      sha256 = "1mm03i1knmhmdqs4ni03nda7jy3s34c2nxf5sjq1cmywk9c0bn0r";
     };
-    dependencies = [
-      "guard"
-      "rspec"
-    ];
+    version = "0.10.3";
   };
-  "haml" = {
-    version = "4.0.7";
+  powerpack = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fnn3fli5wkzyjl4ryh0k90316shqjfnhydmc7f8lqpi0q21va43";
       type = "gem";
-      sha256 = "0mrzjgkygvfii66bbylj2j93na8i89998yi01fin3whwqbvx0m1p";
     };
-    dependencies = [
-      "tilt"
-    ];
+    version = "0.1.1";
   };
-  "haml-rails" = {
-    version = "0.5.3";
+  posix-spawn = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "052lnxbkvlnwfjw4qd7vn2xrlaaqiav6f5x5bcjin97bsrfq6cmr";
       type = "gem";
-      sha256 = "0fg4dh1gb7f4h2571wm5qxli02mgg3r8ikp5vwkww12a431vk625";
     };
-    dependencies = [
-      "actionpack"
-      "activesupport"
-      "haml"
-      "railties"
-    ];
+    version = "0.3.11";
   };
-  "hashie" = {
-    version = "2.1.2";
+  poltergeist = {
+    dependencies = ["capybara" "cliver" "multi_json" "websocket-driver"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ppm4isvbxm739508yjhvisq1iwp1q6h8dx4hkndj2krskavz4i9";
       type = "gem";
-      sha256 = "08w9ask37zh5w989b6igair3zf8gwllyzix97rlabxglif9f9qd9";
     };
+    version = "1.8.1";
   };
-  "highline" = {
-    version = "1.6.21";
+  pg = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07dv4ma9xd75xpsnnwwg1yrpwpji7ydy0q1d9dl0yfqbzpidrw32";
       type = "gem";
-      sha256 = "06bml1fjsnrhd956wqq5k3w8cyd09rv1vixdpa3zzkl6xs72jdn1";
     };
+    version = "0.18.4";
   };
-  "hike" = {
-    version = "1.2.3";
+  parser = {
+    dependencies = ["ast"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14db0gam24j04iprqz4m3hxygkb8h0plnbm0yk4k3lzq6j5wzcac";
       type = "gem";
-      sha256 = "0i6c9hrszzg3gn2j41v3ijnwcm8cc2931fnjiv6mnpl4jcjjykhm";
     };
+    version = "2.2.3.0";
   };
-  "hipchat" = {
-    version = "1.5.2";
+  paranoia = {
+    dependencies = ["activerecord"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z2smnnghjhcs4l5fkz9scs1kj0bvj2n8xmzcvw4rg9yprdnlxr0";
       type = "gem";
-      sha256 = "0hgy5jav479vbzzk53lazhpjj094dcsqw6w1d6zjn52p72bwq60k";
     };
-    dependencies = [
-      "httparty"
-      "mimemagic"
-    ];
+    version = "2.1.4";
   };
-  "hitimes" = {
-    version = "1.2.3";
+  orm_adapter = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
       type = "gem";
-      sha256 = "1fr9raz7652bnnx09dllyjdlnwdxsnl0ig5hq9s4s8vackvmckv4";
     };
+    version = "0.5.0";
   };
-  "html-pipeline" = {
-    version = "1.11.0";
+  org-ruby = {
+    dependencies = ["rubypants"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk";
       type = "gem";
-      sha256 = "1yckdlrn4v5d7bgl8mbffax16640pgg9ny693kqi4j7g17vx2q9l";
     };
-    dependencies = [
-      "activesupport"
-      "nokogiri"
-    ];
+    version = "0.9.12";
   };
-  "http-cookie" = {
-    version = "1.0.2";
+  omniauth_crowd = {
+    dependencies = ["activesupport" "nokogiri" "omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12g5ck05h6kr9mnp870x8pkxsadg81ca70hg8n3k8xx007lfw2q7";
       type = "gem";
-      sha256 = "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw";
     };
-    dependencies = [
-      "domain_name"
-    ];
+    version = "2.2.3";
   };
-  "http_parser.rb" = {
-    version = "0.5.3";
+  omniauth-twitter = {
+    dependencies = ["json" "omniauth-oauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hqjpb1zx0pp3s12c83pkpk4kkx41f001jc5n8qz0h3wll0ld833";
       type = "gem";
-      sha256 = "0fwf5d573j1sw52kz057dw0nx2wlivczmx6ybf6mk065n5g54kyn";
     };
+    version = "1.2.1";
   };
-  "httparty" = {
-    version = "0.13.5";
+  omniauth-shibboleth = {
+    dependencies = ["omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8pwy23aybxhn545357zdjy0hnpfgldwqk5snmz9kxingpq12jl";
       type = "gem";
-      sha256 = "1m93fbpwydzzwhc2zf2qkj6lrbcabpy7xhx7wb2mnbmgh0fs7ff9";
     };
-    dependencies = [
-      "json"
-      "multi_xml"
-    ];
+    version = "1.2.1";
   };
-  "httpclient" = {
-    version = "2.6.0.1";
+  omniauth-saml = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c7pypskq9y6wbl7c8gnp48j256snph11br3csgwvy9whjfisx65";
       type = "gem";
-      sha256 = "0haz4s9xnzr73mkfpgabspj43bhfm9znmpmgdk74n6gih1xlrx1l";
     };
+    version = "1.4.2";
   };
-  "i18n" = {
-    version = "0.7.0";
+  omniauth-oauth2 = {
+    dependencies = ["oauth2" "omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mskwlw5ibx9mz7ywqji6mm56ikf7mglbnfc02qhg6ry527jsxdm";
       type = "gem";
-      sha256 = "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758";
     };
+    version = "1.3.1";
   };
-  "ice_cube" = {
-    version = "0.11.1";
+  omniauth-oauth = {
+    dependencies = ["oauth" "omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
       type = "gem";
-      sha256 = "12y23nczfrgslpfqam90076x603xhlpv3fyh8mv49gks4qn2wk20";
     };
+    version = "1.1.0";
   };
-  "ice_nine" = {
-    version = "0.11.1";
+  omniauth-multipassword = {
+    dependencies = ["omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qykp76hw80lkgb39hyzrv68hkbivc8cv0vbvrnycjh9fwfp1lv8";
       type = "gem";
-      sha256 = "0i674zq0hl6rd0wcd12ni38linfja4k0y3mk5barjb4a6f7rcmkd";
     };
+    version = "0.4.2";
   };
-  "inflecto" = {
-    version = "0.0.2";
+  omniauth-kerberos = {
+    dependencies = ["omniauth-multipassword" "timfel-krb5-auth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05xsv76qjxcxzrvabaar2bchv7435y8l2j0wk4zgchh3yv85kiq7";
       type = "gem";
-      sha256 = "085l5axmvqw59mw5jg454a3m3gr67ckq9405a075isdsn7bm3sp4";
     };
+    version = "0.3.0";
   };
-  "ipaddress" = {
-    version = "0.8.0";
+  omniauth-google-oauth2 = {
+    dependencies = ["addressable" "jwt" "multi_json" "omniauth" "omniauth-oauth2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lm4fk6ig9vwzv7398qd861325g678sfr1iv2mm60xswl69964fi";
       type = "gem";
-      sha256 = "0cwy4pyd9nl2y2apazp3hvi12gccj5a3ify8mi8k3knvxi5wk2ir";
     };
+    version = "0.2.10";
   };
-  "jquery-atwho-rails" = {
+  omniauth-gitlab = {
+    dependencies = ["omniauth" "omniauth-oauth2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "083yyc8612kq8ygd8y7s8lxg2d51jcsakbs4pa19aww67gcm72iz";
+      type = "gem";
+    };
     version = "1.0.1";
+  };
+  omniauth-github = {
+    dependencies = ["omniauth" "omniauth-oauth2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mbx3c8m1llhdxrqdciq8jh428bxj1nvf4yhziv2xqmqpjcqz617";
       type = "gem";
-      sha256 = "0fdy4dxfvnzrjbfm45yrnwfczszvnd7psqhnkby0j3qjg8k9xhzw";
     };
+    version = "1.1.2";
   };
-  "jquery-rails" = {
-    version = "3.1.3";
+  omniauth-facebook = {
+    dependencies = ["omniauth-oauth2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0plj56sna4b6c71k03jsng6gq3r5yxhj7h26ndahc9caasgk869c";
       type = "gem";
-      sha256 = "1n07rj1x7l61wygbjdpknv5nxhbg2iybfgkpdgca2kj6c1nb1d87";
     };
-    dependencies = [
-      "railties"
-      "thor"
-    ];
+    version = "3.0.0";
   };
-  "jquery-scrollto-rails" = {
-    version = "1.4.3";
+  omniauth-cas3 = {
+    dependencies = ["addressable" "nokogiri" "omniauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13swm2hi2z63nvb2bps6g41kki8kr9b5c7014rk8259bxlpflrk7";
       type = "gem";
-      sha256 = "12ic0zxw60ryglm1qjq5ralqd6k4jawmjj7kqnp1nkqds2nvinvp";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "1.1.3";
   };
-  "jquery-turbolinks" = {
-    version = "2.0.2";
+  omniauth-bitbucket = {
+    dependencies = ["multi_json" "omniauth" "omniauth-oauth"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lals2z1yixffrc97zh7zn1jpz9l6vpb3alcp13im42dq9q0g845";
       type = "gem";
-      sha256 = "1plip56znrkq3na5bjys5q2zvlbyj8p8i29kaayzfpi2c4ixxaq3";
     };
-    dependencies = [
-      "railties"
-      "turbolinks"
-    ];
+    version = "0.0.2";
   };
-  "jquery-ui-rails" = {
-    version = "4.2.1";
+  omniauth-azure-oauth2 = {
+    dependencies = ["jwt" "omniauth" "omniauth-oauth2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qay454zvyas8xfnfkycqpjkafaq5pw4gaji176cdfw0blhviz0s";
       type = "gem";
-      sha256 = "1garrnqwh35acj2pp4sp6fpm2g881h23y644lzbic2qmcrq9wd2v";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "0.0.6";
   };
-  "json" = {
-    version = "1.8.3";
+  omniauth = {
+    version = "1.3.1";
     source = {
       type = "gem";
-      sha256 = "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vsqxgzkcfi10b7k6vpv3shmlphbs8grc29hznwl9s0i16n8962p";
     };
   };
-  "jwt" = {
-    version = "1.5.1";
+  octokit = {
+    version = "3.8.0";
     source = {
       type = "gem";
-      sha256 = "13b5ccknrmxnb6dk7vlmnb05za1xxyqd8dzb6lpqq503wpfrmlyk";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vmknh0vz1g734q32kgpxv0qwz9ifmnw2jfpd2w5rrk6xwq1k7a8";
     };
   };
-  "kaminari" = {
-    version = "0.15.1";
+  oauth2 = {
+    dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zaa7qnvizv363apmxx9vxa8f6c6xy70z0jm0ydx38xvhxr8898r";
       type = "gem";
-      sha256 = "1m67ghp55hr16k1njhd00f225qys67n60qa3jz69kzqvrp6qg33d";
     };
-    dependencies = [
-      "actionpack"
-      "activesupport"
-    ];
+    version = "1.0.0";
   };
-  "kgio" = {
-    version = "2.9.3";
+  oauth = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k5j09p3al3clpjl6lax62qmhy43f3j3g7i6f9l4dbs6r5vpv95w";
       type = "gem";
-      sha256 = "07gl0drxwckj7kbq5nla2lf81lrrrvirvvdcrykjgivysfg6yp5v";
     };
+    version = "0.4.7";
   };
-  "launchy" = {
-    version = "2.4.3";
+  nprogress-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ylq2208i95661ba0p1ng2i38z4978ddwiidvpb614amfdq5pqvn";
       type = "gem";
-      sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
     };
-    dependencies = [
-      "addressable"
-    ];
+    version = "0.1.6.7";
   };
-  "letter_opener" = {
-    version = "1.1.2";
+  nokogiri = {
+    dependencies = ["mini_portile2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv";
       type = "gem";
-      sha256 = "1kzbmc686hfh4jznyckq6g40kn14nhb71znsjjm0rc13nb3n0c5l";
     };
-    dependencies = [
-      "launchy"
-    ];
+    version = "1.6.7.2";
   };
-  "listen" = {
-    version = "2.10.1";
+  netrc = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
       type = "gem";
-      sha256 = "1ipainbx21ni7xakdbksxjim6nixvzfjkifb2d3v45a50dp3diqg";
     };
-    dependencies = [
-      "celluloid"
-      "rb-fsevent"
-      "rb-inotify"
-    ];
+    version = "0.11.0";
   };
-  "lumberjack" = {
-    version = "1.0.9";
+  net-ssh = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf";
       type = "gem";
-      sha256 = "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l";
     };
+    version = "3.0.1";
   };
-  "macaddr" = {
-    version = "1.7.1";
+  net-ldap = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z1j0zklbbx3vi91zcd2v0fnkfgkvq3plisa6hxaid8sqndyak46";
       type = "gem";
-      sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
     };
-    dependencies = [
-      "systemu"
-    ];
+    version = "0.12.1";
   };
-  "mail" = {
-    version = "2.6.3";
+  nested_form = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f053j4zfagxyym28msxj56hrpvmyv4lzxy2c5c270f7xbbnii5i";
       type = "gem";
-      sha256 = "1nbg60h3cpnys45h7zydxwrl200p7ksvmrbxnwwbpaaf9vnf3znp";
     };
-    dependencies = [
-      "mime-types"
-    ];
+    version = "0.3.2";
   };
-  "mail_room" = {
-    version = "0.5.2";
+  mysql2 = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n075x14n9kziv0qdxqlzhf3j1abi1w6smpakfpsg4jbr8hnn5ip";
       type = "gem";
-      sha256 = "1l8ncfwqiiv3nd7i0237xd5ymshgyfxfv4w2bj0lj67ys3l4qwh3";
     };
+    version = "0.3.20";
   };
-  "method_source" = {
-    version = "0.8.2";
+  multipart-post = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
       type = "gem";
-      sha256 = "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2";
     };
+    version = "2.0.0";
   };
-  "mime-types" = {
-    version = "1.25.1";
+  multi_xml = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i8r7dsz4z79z3j023l8swan7qpbgxbwwz11g38y2vjqjk16v4q8";
       type = "gem";
-      sha256 = "0mhzsanmnzdshaba7gmsjwnv168r1yj8y0flzw88frw1cickrvw8";
     };
+    version = "0.5.5";
   };
-  "mimemagic" = {
-    version = "0.3.0";
+  multi_json = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rf3l4j3i11lybqzgq2jhszq7fh7gpmafjzd14ymp9cjfxqg596r";
       type = "gem";
-      sha256 = "101lq4bnjs7ywdcicpw3vbz9amg5gbb4va1626fybd2hawgdx8d9";
     };
+    version = "1.11.2";
   };
-  "mini_portile" = {
-    version = "0.6.2";
+  mousetrap-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00n13r5pwrk4vq018128vcfh021dw0fa2bk4pzsv0fslfm8ayp2m";
       type = "gem";
-      sha256 = "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w";
     };
+    version = "1.4.6";
   };
-  "minitest" = {
+  minitest = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8";
+      type = "gem";
+    };
     version = "5.7.0";
+  };
+  mini_portile2 = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l";
       type = "gem";
-      sha256 = "0rxqfakp629mp3vwda7zpgb57lcns5znkskikbfd0kriwv8i1vq8";
     };
+    version = "2.0.0";
   };
-  "mousetrap-rails" = {
-    version = "1.4.6";
+  mimemagic = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "101lq4bnjs7ywdcicpw3vbz9amg5gbb4va1626fybd2hawgdx8d9";
       type = "gem";
-      sha256 = "00n13r5pwrk4vq018128vcfh021dw0fa2bk4pzsv0fslfm8ayp2m";
     };
+    version = "0.3.0";
   };
-  "multi_json" = {
-    version = "1.11.2";
+  mime-types = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mhzsanmnzdshaba7gmsjwnv168r1yj8y0flzw88frw1cickrvw8";
       type = "gem";
-      sha256 = "1rf3l4j3i11lybqzgq2jhszq7fh7gpmafjzd14ymp9cjfxqg596r";
     };
+    version = "1.25.1";
   };
-  "multi_xml" = {
-    version = "0.5.5";
+  method_source = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2";
       type = "gem";
-      sha256 = "0i8r7dsz4z79z3j023l8swan7qpbgxbwwz11g38y2vjqjk16v4q8";
     };
+    version = "0.8.2";
   };
-  "multipart-post" = {
-    version = "1.2.0";
+  mail_room = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jpybhgw9yi50g422qvnwadn5jnj563vh70qaml5cxzdqxbd7fj1";
       type = "gem";
-      sha256 = "12p7lnmc52di1r4h73h6xrpppplzyyhani9p7wm8l4kgf1hnmwnc";
     };
+    version = "0.6.1";
   };
-  "mysql2" = {
-    version = "0.3.20";
+  mail = {
+    dependencies = ["mime-types"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nbg60h3cpnys45h7zydxwrl200p7ksvmrbxnwwbpaaf9vnf3znp";
+      type = "gem";
+    };
+    version = "2.6.3";
+  };
+  macaddr = {
+    dependencies = ["systemu"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
       type = "gem";
-      sha256 = "0n075x14n9kziv0qdxqlzhf3j1abi1w6smpakfpsg4jbr8hnn5ip";
     };
+    version = "1.7.1";
   };
-  "nenv" = {
-    version = "0.2.0";
+  loofah = {
+    dependencies = ["nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "109ps521p0sr3kgc460d58b4pr1z4mqggan2jbsf0aajy9s6xis8";
       type = "gem";
-      sha256 = "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6";
     };
+    version = "2.0.3";
   };
-  "nested_form" = {
-    version = "0.3.2";
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "182wd2pkf690ll19lx6zbk01a3rqkk5lwsyin6kwydl7lqxj5z3g";
       type = "gem";
-      sha256 = "0f053j4zfagxyym28msxj56hrpvmyv4lzxy2c5c270f7xbbnii5i";
     };
+    version = "3.0.5";
   };
-  "net-ldap" = {
-    version = "0.11";
+  letter_opener = {
+    dependencies = ["launchy"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kzbmc686hfh4jznyckq6g40kn14nhb71znsjjm0rc13nb3n0c5l";
       type = "gem";
-      sha256 = "1xfq94lmc5mcc5giipxn9bmrsm9ny1xc1rp0xpm2pgqwr2q8fm7w";
     };
+    version = "1.1.2";
   };
-  "net-scp" = {
-    version = "1.2.1";
+  launchy = {
+    dependencies = ["addressable"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
       type = "gem";
-      sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
     };
-    dependencies = [
-      "net-ssh"
-    ];
+    version = "2.4.3";
   };
-  "net-ssh" = {
-    version = "2.9.2";
+  kgio = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y6wl3vpp82rdv5g340zjgkmy6fny61wib7xylyg0d09k5f26118";
       type = "gem";
-      sha256 = "1p0bj41zrmw5lhnxlm1pqb55zfz9y4p9fkrr9a79nrdmzrk1ph8r";
     };
+    version = "2.10.0";
   };
-  "netrc" = {
-    version = "0.10.3";
+  kaminari = {
+    dependencies = ["actionpack" "activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14vx3kgssl4lv2kn6grr5v2whsynx5rbl1j9aqiq8nc3d7j74l67";
       type = "gem";
-      sha256 = "1r6cmg1nvxspl24yrqn77vx7xjqigpypialblpcv5qj6xmc4b8lg";
     };
+    version = "0.16.3";
   };
-  "newrelic-grape" = {
-    version = "2.0.0";
+  jwt = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0is8973si98rsry5igqdag2jb1knj6jhmfkr9r4mc5n0yvgr5n2q";
       type = "gem";
-      sha256 = "1j8cdlc8lvbh2c2drdq0kfrjbw9bkgqx3qiiizzaxv6yj70vq58a";
     };
-    dependencies = [
-      "grape"
-      "newrelic_rpm"
-    ];
+    version = "1.5.2";
   };
-  "newrelic_rpm" = {
-    version = "3.9.4.245";
+  json = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc";
       type = "gem";
-      sha256 = "0r1x16wwmiqsf1gj2a1lgc0fq1v0x4yv40k5wgb00gs439vgzyin";
     };
+    version = "1.8.3";
   };
-  "nokogiri" = {
-    version = "1.6.6.2";
+  jquery-ui-rails = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gfygrv4bjpjd2c377lw7xzk1b77rxjyy3w6wl4bq1gkqvyrkx77";
       type = "gem";
-      sha256 = "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30";
     };
-    dependencies = [
-      "mini_portile"
-    ];
+    version = "5.0.5";
   };
-  "notiffany" = {
-    version = "0.0.7";
+  jquery-turbolinks = {
+    dependencies = ["railties" "turbolinks"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d23mnl3lgamk9ziw4yyv2ixck6d8s8xp4f9pmwimk0by0jq7xhc";
       type = "gem";
-      sha256 = "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi";
     };
-    dependencies = [
-      "nenv"
-      "shellany"
-    ];
+    version = "2.1.0";
   };
-  "nprogress-rails" = {
-    version = "0.1.2.3";
+  jquery-scrollto-rails = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12ic0zxw60ryglm1qjq5ralqd6k4jawmjj7kqnp1nkqds2nvinvp";
       type = "gem";
-      sha256 = "16gqajynqzfvzcyc8b9bjn8xf6j7y80li00ajicxwvb6my2ag304";
     };
+    version = "1.4.3";
   };
-  "oauth" = {
-    version = "0.4.7";
+  jquery-rails = {
+    dependencies = ["rails-dom-testing" "railties" "thor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "028dv2n0r2r8qj1bqcbzmih0hwzh5km6cvscn2808v5gd44z48r1";
       type = "gem";
-      sha256 = "1k5j09p3al3clpjl6lax62qmhy43f3j3g7i6f9l4dbs6r5vpv95w";
     };
+    version = "4.0.5";
   };
-  "oauth2" = {
-    version = "1.0.0";
+  jquery-atwho-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g8239cddyi48i5n0hq2acg9k7n7jilhby9g36zd19mwqyia16w9";
       type = "gem";
-      sha256 = "0zaa7qnvizv363apmxx9vxa8f6c6xy70z0jm0ydx38xvhxr8898r";
     };
-    dependencies = [
-      "faraday"
-      "jwt"
-      "multi_json"
-      "multi_xml"
-      "rack"
-    ];
+    version = "1.3.2";
   };
-  "octokit" = {
-    version = "3.7.1";
+  ipaddress = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sl0ldvhd6j0qbwhz18w24qy65mdj448b2vhgh2cwn7xrkksmv9l";
       type = "gem";
-      sha256 = "1sd6cammv5m96640vdb8yp3kfpzn52s8y7d77dgsfb25bc1jg4xl";
     };
-    dependencies = [
-      "sawyer"
-    ];
+    version = "0.8.2";
   };
-  "omniauth" = {
-    version = "1.2.2";
+  influxdb = {
+    dependencies = ["cause" "json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vhg5nd88nwvfa76lqcczld916nljswwq6clsixrzi3js8ym9y1w";
       type = "gem";
-      sha256 = "1f0hd9ngfb6f8wz8h2r5n8lr99jqjaghn0h2mljdc6fw031ap7lk";
     };
-    dependencies = [
-      "hashie"
-      "rack"
-    ];
+    version = "0.2.3";
   };
-  "omniauth-bitbucket" = {
+  inflecto = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "085l5axmvqw59mw5jg454a3m3gr67ckq9405a075isdsn7bm3sp4";
+      type = "gem";
+    };
     version = "0.0.2";
+  };
+  ice_nine = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i674zq0hl6rd0wcd12ni38linfja4k0y3mk5barjb4a6f7rcmkd";
       type = "gem";
-      sha256 = "1lals2z1yixffrc97zh7zn1jpz9l6vpb3alcp13im42dq9q0g845";
     };
-    dependencies = [
-      "multi_json"
-      "omniauth"
-      "omniauth-oauth"
-    ];
+    version = "0.11.1";
   };
-  "omniauth-github" = {
-    version = "1.1.2";
+  i18n = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758";
       type = "gem";
-      sha256 = "1mbx3c8m1llhdxrqdciq8jh428bxj1nvf4yhziv2xqmqpjcqz617";
     };
-    dependencies = [
-      "omniauth"
-      "omniauth-oauth2"
-    ];
+    version = "0.7.0";
   };
-  "omniauth-gitlab" = {
-    version = "1.0.0";
+  httpclient = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k6bqsaqq6c824vrbfb5pkz8bpk565zikd10w85rzj2dy809ik6c";
       type = "gem";
-      sha256 = "1amg3y0ivfakamfwiljgla1vff59b116nd0i6khmaj4jsa4s81hw";
     };
-    dependencies = [
-      "omniauth"
-      "omniauth-oauth2"
-    ];
+    version = "2.7.0.1";
   };
-  "omniauth-google-oauth2" = {
-    version = "0.2.6";
+  httparty = {
+    dependencies = ["json" "multi_xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c9gvg6dqw2h3qyaxhrq1pzm6r69zfcmfh038wyhisqsd39g9hr2";
       type = "gem";
-      sha256 = "1nba1iy6w2wj79pvnp9r5bw7jhks0287lw748vkxl9xmwccldnhj";
     };
-    dependencies = [
-      "omniauth"
-      "omniauth-oauth2"
-    ];
+    version = "0.13.7";
   };
-  "omniauth-kerberos" = {
-    version = "0.2.0";
+  "http_parser.rb" = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fwf5d573j1sw52kz057dw0nx2wlivczmx6ybf6mk065n5g54kyn";
       type = "gem";
-      sha256 = "1s626nxzq8i6gy67pkh04h8hlmmx4vwpc36sbdsgm1xwyj3hrn1b";
     };
-    dependencies = [
-      "omniauth-multipassword"
-      "timfel-krb5-auth"
-    ];
+    version = "0.5.3";
   };
-  "omniauth-multipassword" = {
-    version = "0.4.2";
+  http-cookie = {
+    dependencies = ["domain_name"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw";
       type = "gem";
-      sha256 = "0qykp76hw80lkgb39hyzrv68hkbivc8cv0vbvrnycjh9fwfp1lv8";
     };
-    dependencies = [
-      "omniauth"
-    ];
+    version = "1.0.2";
   };
-  "omniauth-oauth" = {
-    version = "1.1.0";
+  html2haml = {
+    dependencies = ["erubis" "haml" "nokogiri" "ruby_parser"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "069zcy8lr010hn4qmbi8g5srdf69brk8nbgx4zcqcgbgsl4m8d4i";
       type = "gem";
-      sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
     };
-    dependencies = [
-      "oauth"
-      "omniauth"
-    ];
+    version = "2.0.0";
   };
-  "omniauth-oauth2" = {
-    version = "1.3.1";
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yckdlrn4v5d7bgl8mbffax16640pgg9ny693kqi4j7g17vx2q9l";
       type = "gem";
-      sha256 = "0mskwlw5ibx9mz7ywqji6mm56ikf7mglbnfc02qhg6ry527jsxdm";
     };
-    dependencies = [
-      "oauth2"
-      "omniauth"
-    ];
+    version = "1.11.0";
   };
-  "omniauth-saml" = {
-    version = "1.4.1";
+  hipchat = {
+    dependencies = ["httparty" "mimemagic"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hgy5jav479vbzzk53lazhpjj094dcsqw6w1d6zjn52p72bwq60k";
       type = "gem";
-      sha256 = "12jkjdrkc3k2k1y53vfxyicdq2j0djhln6apwzmc10h9jhq23nrq";
     };
-    dependencies = [
-      "omniauth"
-      "ruby-saml"
-    ];
+    version = "1.5.2";
   };
-  "omniauth-shibboleth" = {
-    version = "1.1.2";
+  hike = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i6c9hrszzg3gn2j41v3ijnwcm8cc2931fnjiv6mnpl4jcjjykhm";
       type = "gem";
-      sha256 = "0wy24hwsipjx8iswdbrncgv15qxv7ibg07rv2n6byi037mrnhnhw";
     };
-    dependencies = [
-      "omniauth"
-    ];
+    version = "1.2.3";
   };
-  "omniauth-twitter" = {
-    version = "1.0.1";
+  highline = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr";
       type = "gem";
-      sha256 = "060gnfc9im786llgi7vlrfhar1b7jlk19bjjc5d50lwrah0hh4fd";
     };
-    dependencies = [
-      "multi_json"
-      "omniauth-oauth"
-    ];
+    version = "1.7.8";
   };
-  "omniauth_crowd" = {
-    version = "2.2.3";
+  hashie = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1iv5hd0zcryprx9lbcm615r3afc0d6rhc27clywmhhgpx68k8899";
       type = "gem";
-      sha256 = "12g5ck05h6kr9mnp870x8pkxsadg81ca70hg8n3k8xx007lfw2q7";
     };
-    dependencies = [
-      "activesupport"
-      "nokogiri"
-      "omniauth"
-    ];
+    version = "3.4.3";
   };
-  "opennebula" = {
-    version = "4.12.1";
+  haml-rails = {
+    dependencies = ["actionpack" "activesupport" "haml" "html2haml" "railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hbfznkxab663hxp1v6gpsa7sv6w1fnw9r8b3flixwylnwh3c5dz";
       type = "gem";
-      sha256 = "1y2k706mcxf69cviy415icnhdz7ll5nld9iksqdg4asp60gybq3k";
     };
-    dependencies = [
-      "json"
-      "nokogiri"
-      "rbvmomi"
-    ];
+    version = "0.9.0";
   };
-  "org-ruby" = {
-    version = "0.9.12";
+  haml = {
+    dependencies = ["tilt"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mrzjgkygvfii66bbylj2j93na8i89998yi01fin3whwqbvx0m1p";
       type = "gem";
-      sha256 = "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk";
     };
-    dependencies = [
-      "rubypants"
-    ];
+    version = "4.0.7";
   };
-  "orm_adapter" = {
-    version = "0.5.0";
+  grape-entity = {
+    dependencies = ["activesupport" "multi_json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hxghs2p9ncvdwhp6dwr1a74g552c49dd0jzy0szp4pg2xjbgjk8";
       type = "gem";
-      sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
     };
+    version = "0.4.8";
   };
-  "paranoia" = {
-    version = "2.1.3";
+  grape = {
+    dependencies = ["activesupport" "builder" "hashie" "multi_json" "multi_xml" "rack" "rack-accept" "rack-mount" "virtus"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dxfal5jspxq612jjkqbd7xgp5dswdyllbbfq6fj2m7s21pismmh";
       type = "gem";
-      sha256 = "1v6izkdf8npwcblzn9zl9ysagih75584d8hpjzhiv0ijz6cw3l92";
     };
-    dependencies = [
-      "activerecord"
-    ];
+    version = "0.13.0";
   };
-  "parser" = {
-    version = "2.2.2.6";
+  gon = {
+    dependencies = ["actionpack" "json" "multi_json" "request_store"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f359cd9zsa4nrng35bij5skvjrj5ywn2dhmlg41b97vmza26bxr";
       type = "gem";
-      sha256 = "0rmh4yr5qh87wqgwzbs6vy8wyf248k09m2vfjf9br6jdb5zgj5hh";
     };
-    dependencies = [
-      "ast"
-    ];
+    version = "6.0.1";
   };
-  "pg" = {
-    version = "0.18.2";
+  gollum-lib = {
+    dependencies = ["github-markup" "gollum-grit_adapter" "nokogiri" "rouge" "sanitize" "stringex"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01s8pgzhc3cgcmsy6hh79wrcbn5vbadniq2a7d4qw87kpq7mzfdm";
       type = "gem";
-      sha256 = "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf";
     };
+    version = "4.1.0";
   };
-  "poltergeist" = {
-    version = "1.6.0";
+  gollum-grit_adapter = {
+    dependencies = ["gitlab-grit"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02c5qfq0s0kx2ifnpbnbgz6258fl7rchzzzc7vpx72shi8gbpac7";
       type = "gem";
-      sha256 = "0mpy2yhn0bhm2s78h8wy22j6378vvsdkj5pcvhr2zfhdjf46g41d";
     };
-    dependencies = [
-      "capybara"
-      "cliver"
-      "multi_json"
-      "websocket-driver"
-    ];
+    version = "1.0.0";
   };
-  "posix-spawn" = {
-    version = "0.3.11";
+  globalid = {
+    dependencies = ["activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "145xrpsfx1qqjy33r6qa588wb16dvdhxzj2aysh755vhg6hgm291";
       type = "gem";
-      sha256 = "052lnxbkvlnwfjw4qd7vn2xrlaaqiav6f5x5bcjin97bsrfq6cmr";
     };
+    version = "0.3.6";
   };
-  "powerpack" = {
-    version = "0.0.9";
+  gitlab_omniauth-ldap = {
+    dependencies = ["net-ldap" "omniauth" "pyu-ruby-sasl" "rubyntlm"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vbdyi57vvlrigyfhmqrnkw801x57fwa3gxvj1rj2bn9ig5186ri";
       type = "gem";
-      sha256 = "0gflp6d2dc4jz3kgg8v4pdzm3qr2bbdygr83dbsi69pxm2gy5536";
     };
+    version = "1.2.1";
   };
-  "pry" = {
-    version = "0.10.1";
+  gitlab_meta = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14vahv7gblcypbvip845sg3lvawf3kij61mkxz5vyfcv23niqvp9";
       type = "gem";
-      sha256 = "1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z";
     };
-    dependencies = [
-      "coderay"
-      "method_source"
-      "slop"
-    ];
+    version = "7.0";
   };
-  "pry-rails" = {
-    version = "0.3.4";
+  gitlab_git = {
+    version = "8.2.0";
     source = {
       type = "gem";
-      sha256 = "0a2iinvabis2xmv0z7z7jmh7bbkkngxj2qixfdg5m6qj9x8k1kx6";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0311dl4vh6h7k8xarmpr61fndrhbmfskzjzkkj1rr8321gn8znfv";
     };
-    dependencies = [
-      "pry"
-    ];
   };
-  "pyu-ruby-sasl" = {
-    version = "0.0.3.3";
+  gitlab_emoji = {
+    version = "0.3.1";
     source = {
       type = "gem";
-      sha256 = "1rcpjiz9lrvyb3rd8k8qni0v4ps08psympffyldmmnrqayyad0sn";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dy746icdmyc548mb5xkavvkn37pk7vv3gznx0p6hff325pan8dj";
     };
   };
-  "quiet_assets" = {
-    version = "1.0.3";
+  gitlab-grit = {
+    dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nv8shx7w7fww8lf5a2rbvf7bq173rllm381m6x7g1i0qqc68q1b";
       type = "gem";
-      sha256 = "1q4azw4j1xsgd7qwcig110mfdn1fm0y34y87zw9j9v187xr401b1";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "2.7.3";
   };
-  "rack" = {
-    version = "1.5.5";
+  gitlab-flowdock-git-hook = {
+    dependencies = ["flowdock" "gitlab-grit" "multi_json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s3a10cdbh4xy732b92zcsm5zyc1lhi5v29d76j8mwbqmj11a2p8";
       type = "gem";
-      sha256 = "1ds3gh8m5gy0d2k4g12k67qid7magg1ia186872yq22ham7sgr2a";
     };
+    version = "1.0.1";
   };
-  "rack-accept" = {
-    version = "0.4.5";
+  github-markup = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01r901wcgn0gs0n9h684gs5n90y1vaj9lxnx4z5ig611jwa43ivq";
       type = "gem";
-      sha256 = "18jdipx17b4ki33cfqvliapd31sbfvs4mv727awynr6v95a7n936";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "1.3.3";
   };
-  "rack-attack" = {
-    version = "4.3.0";
+  github-linguist = {
+    version = "4.7.5";
     source = {
       type = "gem";
-      sha256 = "06v5xvp33aysf8hkl9lwl1yjkc82jdlvcm2361y7ckjgykf8ixfr";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xxm2lbabkc1xmx2myv56a4fkw3wwg9n8w2bzwrl4s33kf6x62ag";
     };
-    dependencies = [
-      "rack"
-    ];
   };
-  "rack-cors" = {
-    version = "0.2.9";
+  gherkin-ruby = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1";
       type = "gem";
-      sha256 = "0z88pbbasr86z6h0965cny0gvrnj7zwv31s506xbpivk4vd6n9as";
     };
+    version = "0.3.2";
   };
-  "rack-mini-profiler" = {
-    version = "0.9.7";
+  get_process_mem = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "025f7v6bpbgsa2nr0hzv2riggj8qmzbwcyxfgjidpmwh5grh7j29";
       type = "gem";
-      sha256 = "03lz6x1s8rbrccfsxl2rq677zqkmkvzv7whbmwzdp71zzyvvm14j";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "0.2.0";
   };
-  "rack-mount" = {
-    version = "0.8.3";
+  gemojione = {
+    version = "2.2.1";
     source = {
       type = "gem";
-      sha256 = "09a1qfaxxsll1kbgz7z0q0nr48sfmfm7akzaviis5bjpa5r00ld2";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0av60lajn64z1csmkzfaf5wvpd3x48lcshiknkqr8m0zx3sg7w3h";
     };
-    dependencies = [
-      "rack"
-    ];
   };
-  "rack-oauth2" = {
-    version = "1.0.10";
+  gemnasium-gitlab-service = {
+    dependencies = ["rugged"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qv7fkahmqkah3770ycrxd0x2ais4z41hb43a0r8q8wcdklns3m3";
       type = "gem";
-      sha256 = "1srg4hdnyn6bwx225snyq7flb0cn96ppdvicwls6qvp6i4n91k36";
     };
-    dependencies = [
-      "activesupport"
-      "attr_required"
-      "httpclient"
-      "multi_json"
-      "rack"
-    ];
+    version = "0.2.6";
   };
-  "rack-protection" = {
-    version = "1.5.3";
+  fuubar = {
+    dependencies = ["rspec" "ruby-progressbar"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xwqs24y8s73aayh39si17kccsmr0bjgmi6jrjyfp7gkjb6iyhpv";
       type = "gem";
-      sha256 = "0cvb21zz7p9wy23wdav63z5qzfn4nialik22yqp6gihkgfqqrh5r";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "2.0.0";
   };
-  "rack-test" = {
-    version = "0.6.3";
+  formatador = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
       type = "gem";
-      sha256 = "0h6x5jq24makgv2fq5qqgjlrk74dxfy62jif9blk43llw8ib2q7z";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "0.2.5";
   };
-  "rails" = {
-    version = "4.1.12";
+  foreman = {
+    dependencies = ["thor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1caz8mi7gq1hs4l1flcyyw1iw1bdvdbhppsvy12akr01k3s17xaq";
       type = "gem";
-      sha256 = "0k2n6y92gmysk8y6j1hy6av53f07hhzkhw41qfqwr2hgqc6q8idv";
     };
-    dependencies = [
-      "actionmailer"
-      "actionpack"
-      "actionview"
-      "activemodel"
-      "activerecord"
-      "activesupport"
-      "railties"
-      "sprockets-rails"
-    ];
+    version = "0.78.0";
   };
-  "rails-observers" = {
+  font-awesome-rails = {
+    dependencies = ["railties"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09x1bg98sp2v1lsg9h2bal915q811xq84h9d74p1f3378ga63c1x";
+      type = "gem";
+    };
+    version = "4.5.0.0";
+  };
+  fog-xml = {
+    dependencies = ["fog-core" "nokogiri"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1576sbzza47z48p0k9h1wg3rhgcvcvdd1dfz3xx1cgahwr564fqa";
+      type = "gem";
+    };
     version = "0.1.2";
+  };
+  fog-xenserver = {
+    dependencies = ["fog-core" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ngw8hh8ljk7wi0cp8n4b4jcy2acx0yqzjk7851m3mp0kji5dlgl";
       type = "gem";
-      sha256 = "1lsw19jzmvipvrfy2z04hi7r29dvkfc43h43vs67x6lsj9rxwwcy";
     };
-    dependencies = [
-      "activemodel"
-    ];
+    version = "0.2.2";
   };
-  "railties" = {
-    version = "4.1.12";
+  fog-voxel = {
+    dependencies = ["fog-core" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10skdnj59yf4jpvq769njjrvh2l0wzaa7liva8n78qq003mvmfgx";
       type = "gem";
-      sha256 = "0v16grd6ip3ijiz1v36myiirqx9fx004lfvnsmh28b2ddjxcci4q";
     };
-    dependencies = [
-      "actionpack"
-      "activesupport"
-      "rake"
-      "thor"
-    ];
+    version = "0.1.0";
   };
-  "rainbow" = {
-    version = "2.0.0";
+  fog-vmfusion = {
+    dependencies = ["fission" "fog-core"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g0l0k9ylxk1h9pzqr6h2ba98fl47lpp3j19lqv4jxw0iw1rqxn4";
       type = "gem";
-      sha256 = "0dsnzfjiih2w8npsjab3yx1ssmmvmgjkbxny0i9yzrdy7whfw7b4";
     };
+    version = "0.1.0";
   };
-  "raindrops" = {
-    version = "0.15.0";
+  fog-terremark = {
+    dependencies = ["fog-core" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01lfkh9jppj0iknlklmwyb7ym3bfhkq58m3absb6rf5a5mcwi3lf";
       type = "gem";
-      sha256 = "1hv0xhr762axywr937czi92fs0x3zk7k22vg6f4i7rr8d05sp560";
     };
+    version = "0.1.0";
   };
-  "rake" = {
-    version = "10.4.2";
+  fog-storm_on_demand = {
+    dependencies = ["fog-core" "fog-json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fif1x8ci095b2yyilf65n7x6iyvn448azrsnmwsdkriy8vxxv3y";
       type = "gem";
-      sha256 = "1rn03rqlf1iv6n87a78hkda2yqparhhaivfjpizblmxvlw2hk5r8";
     };
+    version = "0.1.1";
   };
-  "raphael-rails" = {
-    version = "2.1.2";
+  fog-softlayer = {
+    dependencies = ["fog-core" "fog-json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zax2wws0q8pm787jnlxd2xlj23f2acz0s6jl5nzczyxjgll571r";
       type = "gem";
-      sha256 = "0sjiaymvfn4al5dr1pza5i142byan0fxnj4rymziyql2bzvdm2bc";
     };
+    version = "1.0.3";
   };
-  "rb-fsevent" = {
-    version = "0.9.5";
+  fog-serverlove = {
+    dependencies = ["fog-core" "fog-json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hxgmwzygrw25rbsy05i6nzsyr0xl7xj5j2sjpkb9n9wli5sagci";
       type = "gem";
-      sha256 = "1p4rz4qqarl7xg2aldpra54h81yal93cbxdy02lmb9kf6f7y2fz4";
     };
+    version = "0.1.2";
   };
-  "rb-inotify" = {
-    version = "0.9.5";
+  fog-sakuracloud = {
+    dependencies = ["fog-core" "fog-json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08krsn9sk5sx0aza812g31r169bd0zanb8pq5am3a64j6azarimd";
       type = "gem";
-      sha256 = "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9";
     };
-    dependencies = [
-      "ffi"
-    ];
+    version = "1.7.5";
   };
-  "rbvmomi" = {
-    version = "1.8.2";
+  fog-riakcs = {
+    dependencies = ["fog-core" "fog-json" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nbxc4dky3agfwrmgm1aqmi59p6vnvfnfbhhg7xpg4c2cf41whxm";
       type = "gem";
-      sha256 = "0gjbfazl2q42m1m51nvv14q7y5lbya272flmvhpqvg5z10nbxanj";
     };
-    dependencies = [
-      "builder"
-      "nokogiri"
-      "trollop"
-    ];
+    version = "0.1.0";
   };
-  "rdoc" = {
-    version = "3.12.2";
+  fog-radosgw = {
+    dependencies = ["fog-core" "fog-json" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nslgv8yp5qkiryj3zsm91gs7s6i626igj61kwxjjwk2yv6swyr6";
       type = "gem";
-      sha256 = "1v9k4sp5yzj2bshngckdvivj6bszciskk1nd2r3wri2ygs7vgqm8";
     };
-    dependencies = [
-      "json"
-    ];
+    version = "0.0.5";
   };
-  "redcarpet" = {
-    version = "3.3.2";
+  fog-profitbricks = {
+    dependencies = ["fog-core" "fog-xml" "nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "154sqs2dcmvg21v4m3fj8f09z5i70sq8a485v6rdygsffs8xrycn";
       type = "gem";
-      sha256 = "1xf95nrc8jgv9hjzjnbf3ljwmp29rqxdamyj9crza2czl4k63rnm";
     };
+    version = "0.0.5";
   };
-  "redis" = {
-    version = "3.2.1";
+  fog-powerdns = {
+    dependencies = ["fog-core" "fog-json" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08zavzwfkk344gz83phz4sy9nsjznsdjsmn1ifp6ja17bvydlhh7";
       type = "gem";
-      sha256 = "16jzlqp80qiqg5cdc9l144n6k3c5qj9if4pgij87sscn8ahi993k";
     };
+    version = "0.1.1";
   };
-  "redis-actionpack" = {
-    version = "4.0.0";
+  fog-local = {
+    dependencies = ["fog-core"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0i5hxwzmc2ag3z9nlligsaf679kp2pz39cd8n2s9cmxaamnlh2s3";
       type = "gem";
-      sha256 = "0mad0v3qanw3xi9zs03f4w8sn1qb3x501k3235ck8m5i8vgjk474";
     };
-    dependencies = [
-      "actionpack"
-      "redis-rack"
-      "redis-store"
-    ];
+    version = "0.2.1";
   };
-  "redis-activesupport" = {
-    version = "4.1.1";
+  fog-json = {
+    dependencies = ["fog-core" "multi_json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0advkkdjajkym77r3c0bg2rlahl2akj0vl4p5r273k2qmi16n00r";
       type = "gem";
-      sha256 = "1xciffiqbhksy534sysdd8pgn2hlvyrs1qb4x1kbcx9f3f83y551";
     };
-    dependencies = [
-      "activesupport"
-      "redis-store"
-    ];
+    version = "1.0.2";
   };
-  "redis-namespace" = {
-    version = "1.5.2";
+  fog-google = {
+    dependencies = ["fog-core" "fog-json" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z4vmswpqwph04c0wqzrscns1d1wdm8kbxx457bv156mawzrhfj3";
       type = "gem";
-      sha256 = "0rp8gfkznfxqzxk9s976k71jnljkh0clkrhnp6vgx46s5yhj9g25";
     };
-    dependencies = [
-      "redis"
-    ];
+    version = "0.1.0";
   };
-  "redis-rack" = {
-    version = "1.5.0";
+  fog-ecloud = {
+    dependencies = ["fog-core" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18rb4qjad9xwwqvvpj8r2h0hi9svy71pm4d3fc28cdcnfarmdi06";
       type = "gem";
-      sha256 = "1y1mxx8gn0krdrpwllv7fqsbvki1qjnb2dz8b4q9gwc326829gk8";
     };
-    dependencies = [
-      "rack"
-      "redis-store"
-    ];
+    version = "0.3.0";
   };
-  "redis-rails" = {
-    version = "4.0.0";
+  fog-dynect = {
+    dependencies = ["fog-core" "fog-json" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18lqmdkm22254z86jh3aa9v9vqk8bgbd3d1m0w7az3ij47ak7kch";
       type = "gem";
-      sha256 = "0igww7hb58aq74mh50dli3zjg78b54y8nhd0h1h9vz4vgjd4q8m7";
     };
-    dependencies = [
-      "redis-actionpack"
-      "redis-activesupport"
-      "redis-store"
-    ];
+    version = "0.0.2";
   };
-  "redis-store" = {
-    version = "1.1.6";
+  fog-core = {
+    dependencies = ["builder" "excon" "formatador"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02z91r3f5a64hlalm6h39v0778yl2kk3qvva0zvplpp9hpwbwzhl";
       type = "gem";
-      sha256 = "1x8pfpd6c3xxb3l9nyggi9qpgxcp9k9rkdwwl80m95lhynwaxcds";
     };
-    dependencies = [
-      "redis"
-    ];
+    version = "1.35.0";
   };
-  "request_store" = {
-    version = "1.2.0";
+  fog-brightbox = {
+    dependencies = ["fog-core" "fog-json" "inflecto"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p7rbx587hb1d1am90dcr3zdp6y50c2zddh97yfgl62vji0pbkkd";
       type = "gem";
-      sha256 = "1s7lk5klbg2qfh8hgqymjrlwgpmjmfx03x1hniq16shd1cjwch45";
     };
+    version = "0.10.1";
   };
-  "rerun" = {
-    version = "0.10.0";
+  fog-aws = {
+    dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pzfahq8h3alfflb5dr8lm02q27x81vm96qn5zyfdlx86yy7bq96";
       type = "gem";
-      sha256 = "0hsw0q0wriz4h55hkm9yd313hqixgsgnp4wrl8v4k4zwz41j76xk";
     };
-    dependencies = [
-      "listen"
-    ];
+    version = "0.8.1";
   };
-  "responders" = {
-    version = "1.1.2";
+  fog-atmos = {
+    dependencies = ["fog-core" "fog-xml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1aaxgnw9zy96gsh4h73kszypc32sx497s6bslvhfqh32q9d1y8c9";
       type = "gem";
-      sha256 = "178279kf1kaah917r6zwzw5kk9swj28yxmg6aqffna7789kjhy3f";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "0.1.0";
   };
-  "rest-client" = {
-    version = "1.8.0";
+  fog-aliyun = {
+    dependencies = ["fog-core" "fog-json" "ipaddress" "xml-simple"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i76g8sdskyfc0gcnd6n9i757s7dmwg3wf6spcr2xh8wzyxkm1pj";
       type = "gem";
-      sha256 = "1m8z0c4yf6w47iqz6j2p7x1ip4qnnzvhdph9d5fgx081cvjly3p7";
     };
-    dependencies = [
-      "http-cookie"
-      "mime-types"
-      "netrc"
-    ];
+    version = "0.1.0";
   };
-  "rinku" = {
-    version = "1.7.3";
+  fog = {
+    dependencies = ["fog-aliyun" "fog-atmos" "fog-aws" "fog-brightbox" "fog-core" "fog-dynect" "fog-ecloud" "fog-google" "fog-json" "fog-local" "fog-powerdns" "fog-profitbricks" "fog-radosgw" "fog-riakcs" "fog-sakuracloud" "fog-serverlove" "fog-softlayer" "fog-storm_on_demand" "fog-terremark" "fog-vmfusion" "fog-voxel" "fog-xenserver" "fog-xml" "ipaddress" "nokogiri"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ml31jdycqdm8w7w3l9pbyrgbnmrrnhmkppa2x4bwi9as1n1jmwq";
       type = "gem";
-      sha256 = "1jh6nys332brph55i6x6cil6swm086kxjw34wq131nl6mwryqp7b";
     };
+    version = "1.36.0";
   };
-  "rotp" = {
-    version = "2.1.1";
+  flowdock = {
+    dependencies = ["httparty" "multi_json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nrvg4gzgabf5mnnhccl8bwrkvn3y4pm7a1dqzqhpvfr4m5pafg";
       type = "gem";
-      sha256 = "1nzsc9hfxijnyzjbv728ln9dm80bc608chaihjdk63i2wi4m529g";
     };
+    version = "0.7.1";
   };
-  "rouge" = {
-    version = "1.10.1";
+  flog = {
+    dependencies = ["ruby_parser" "sexp_processor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1asrcdj6gh5mxcimqak94jjyyi5cxnqn904lc8pmrljg1nv1bxpm";
       type = "gem";
-      sha256 = "0wp8as9ypdy18kdj9h70kny1rdfq71mr8cj2bpahr9vxjjvjasqz";
     };
+    version = "4.3.2";
   };
-  "rqrcode" = {
-    version = "0.7.0";
+  flay = {
+    dependencies = ["ruby_parser" "sexp_processor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zcp9nmnfqixdcqa2dzwwjy5np4n2n16bj25gw7bbzbjp9hqzhn6";
       type = "gem";
-      sha256 = "188n1mvc7klrlw30bai16sdg4yannmy7cz0sg0nvm6f1kjx5qflb";
     };
-    dependencies = [
-      "chunky_png"
-    ];
+    version = "2.6.1";
   };
-  "rqrcode-rails3" = {
-    version = "0.1.7";
+  fission = {
+    dependencies = ["CFPropertyList"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09pmp1j1rr8r3pcmbn2na2ls7s1j9ijbxj99xi3a8r6v5xhjdjzh";
       type = "gem";
-      sha256 = "1i28rwmj24ssk91chn0g7qsnvn003y3s5a7jsrg3w4l5ckr841bg";
     };
-    dependencies = [
-      "rqrcode"
-    ];
+    version = "0.5.0";
   };
-  "rspec" = {
-    version = "3.3.0";
+  ffi = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj";
       type = "gem";
-      sha256 = "1bn5zs71agc0zyns2r3c8myi5bxw3q7xnzp7f3v5b7hbil1qym4r";
     };
-    dependencies = [
-      "rspec-core"
-      "rspec-expectations"
-      "rspec-mocks"
-    ];
+    version = "1.9.10";
   };
-  "rspec-core" = {
-    version = "3.3.2";
+  ffaker = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19fnbbsw87asyb1hvkr870l2yldah2jcjb8074pgyrma5lynwmn0";
       type = "gem";
-      sha256 = "0xw5qi936j6nz9fixi2mwy03f406761cd72bzyvd61pr854d7hy1";
     };
-    dependencies = [
-      "rspec-support"
-    ];
+    version = "2.0.0";
   };
-  "rspec-expectations" = {
-    version = "3.3.1";
+  fastercsv = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1df3vfgw5wg0s405z0pj0rfcvnl9q6wak7ka8gn0xqg4cag1k66h";
       type = "gem";
-      sha256 = "1d0b5hpkxlr9f3xpsbhvl3irnk4smmycx2xnmc8qv3pqaa7mb7ah";
     };
-    dependencies = [
-      "diff-lcs"
-      "rspec-support"
-    ];
+    version = "1.5.5";
   };
-  "rspec-mocks" = {
-    version = "3.3.2";
+  faraday_middleware-multi_json = {
+    dependencies = ["faraday_middleware" "multi_json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0651sxhzbq9xfq3hbpmrp0nbybxnm9ja3m97k386m4bqgamlvz1q";
       type = "gem";
-      sha256 = "1lfbzscmpyixlbapxmhy2s69596vs1z00lv590l51hgdw70z92vg";
     };
-    dependencies = [
-      "diff-lcs"
-      "rspec-support"
-    ];
+    version = "0.0.6";
   };
-  "rspec-rails" = {
-    version = "3.3.3";
+  faraday_middleware = {
+    dependencies = ["faraday"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nxia26xzy8i56qfyz1bg8dg9yb26swpgci8n5jry8mh4bnx5r5h";
       type = "gem";
-      sha256 = "0m66n9p3a7d3fmrzkbh8312prb6dhrgmp53g1amck308ranasv2a";
     };
-    dependencies = [
-      "actionpack"
-      "activesupport"
-      "railties"
-      "rspec-core"
-      "rspec-expectations"
-      "rspec-mocks"
-      "rspec-support"
-    ];
-  };
-  "rspec-support" = {
-    version = "3.3.0";
+    version = "0.10.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kplqkpn2s2yl3lxdf6h7sfldqvkbkpxwwxhyk7mdhjplb5faqh6";
       type = "gem";
-      sha256 = "1cyagig8slxjas8mbg5f8bl240b8zgr8mnjsvrznag1fwpkh4h27";
     };
+    version = "0.9.2";
   };
-  "rubocop" = {
-    version = "0.28.0";
+  factory_girl_rails = {
+    dependencies = ["factory_girl" "railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jj0yl6mfildb4g79dwgc1q5pv2pa65k9b1ml43mi8mg62j8mrhz";
       type = "gem";
-      sha256 = "07n4gha1dp1n15np5v8p58980lsiys3wa9h39lrvnzxgq18m3c4d";
     };
-    dependencies = [
-      "astrolabe"
-      "parser"
-      "powerpack"
-      "rainbow"
-      "ruby-progressbar"
-    ];
+    version = "4.3.0";
   };
-  "ruby-fogbugz" = {
-    version = "0.2.1";
+  factory_girl = {
+    dependencies = ["activesupport"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13z20a4b7z1c8vbz0qz5ranssdprldwvwlgjmn38x311sfjmp9dz";
       type = "gem";
-      sha256 = "1jj0gpkycbrivkh2q3429vj6mbgx6axxisg69slj3c4mgvzfgchm";
     };
-    dependencies = [
-      "crack"
-    ];
+    version = "4.3.0";
   };
-  "ruby-progressbar" = {
-    version = "1.7.5";
+  expression_parser = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1938z3wmmdabqxlh5d5c56xfg1jc6z15p7zjyhvk7364zwydnmib";
       type = "gem";
-      sha256 = "0hynaavnqzld17qdx9r7hfw00y16ybldwq730zrqfszjwgi59ivi";
     };
+    version = "0.9.0";
   };
-  "ruby-saml" = {
-    version = "1.0.0";
+  execjs = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0grlxwiccbnflxs30r3h7g23xnps5knav1jyqkk3anvm8363ifjw";
       type = "gem";
-      sha256 = "0hqn49ca2ln5ybc77vpm1vs0szk3pyrz3hnbkbqrkp864mniisi4";
     };
-    dependencies = [
-      "nokogiri"
-      "uuid"
-    ];
+    version = "2.6.0";
   };
-  "ruby2ruby" = {
-    version = "2.1.4";
+  excon = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1shb4g3dhsfkywgjv6123yrvp2c8bvi8hqmq47iqa5lp72sn4b4w";
       type = "gem";
-      sha256 = "1h0bwjivcsazfd9j9phs640xxqwgvggj9kmafin88ahf7j77spim";
     };
-    dependencies = [
-      "ruby_parser"
-      "sexp_processor"
-    ];
+    version = "0.45.4";
   };
-  "ruby_parser" = {
-    version = "3.5.0";
+  eventmachine = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp";
       type = "gem";
-      sha256 = "1l1lzbn5ywfsg8m8cvxwb415p1816ikvjqnsh5as9h4g1vcknw3y";
     };
-    dependencies = [
-      "sexp_processor"
-    ];
+    version = "1.0.8";
   };
-  "rubyntlm" = {
-    version = "0.5.2";
+  escape_utils = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hb8nmrgmd9n5dhih86fp91sf26mmw14sdn5vswg5g20svrqxc7x";
       type = "gem";
-      sha256 = "04l8686hl0829x4acsnbz0licf8n6794p7shz8iyahin1jnqg3d7";
     };
+    version = "1.1.0";
   };
-  "rubypants" = {
-    version = "0.2.0";
+  erubis = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3";
       type = "gem";
-      sha256 = "1vpdkrc4c8qhrxph41wqwswl28q5h5h994gy4c1mlrckqzm3hzph";
     };
+    version = "2.7.0";
   };
-  "rugged" = {
-    version = "0.22.2";
+  equalizer = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
       type = "gem";
-      sha256 = "179pnnvlsrwd96csmhwhy45y4f5p7qh3xcbg6v3hdv5m9qqcirpp";
     };
+    version = "0.0.11";
   };
-  "safe_yaml" = {
-    version = "1.0.4";
+  encryptor = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04wqqda081h7hmhwjjx1yqxprxjk8s5jgv837xqv1bpxiv7f4v1y";
       type = "gem";
-      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
     };
+    version = "1.3.0";
   };
-  "sanitize" = {
-    version = "2.1.0";
+  email_spec = {
+    dependencies = ["launchy" "mail"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00p1cc69ncrgg7m45va43pszip8anx5735w1lsb7p5ygkyw8nnpv";
       type = "gem";
-      sha256 = "0xsv6xqrlz91rd8wifjknadbl3z5h6qphmxy0hjb189qbdghggn3";
     };
-    dependencies = [
-      "nokogiri"
-    ];
+    version = "1.6.0";
   };
-  "sass" = {
-    version = "3.2.19";
+  email_reply_parser = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k2p229mv7xn7q627zwmvhrcvba4b9m70pw2jfjm6iimg2vmf22r";
       type = "gem";
-      sha256 = "1b5z55pmban9ry7k572ghmpcz9h04nbrdhdfpcz8zaldv5v7vkfx";
     };
+    version = "0.5.8";
   };
-  "sass-rails" = {
-    version = "4.0.5";
+  dropzonejs-rails = {
+    dependencies = ["rails"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vqqxzv6qdqy47m2q28adnmccfvc17p2bmkkaqjvrczrhvkkha64";
       type = "gem";
-      sha256 = "1nw78ijbxpaf0pdr6c0jx63nna1l9m8s1mmb4m3g2clx0i0xm4wb";
     };
-    dependencies = [
-      "railties"
-      "sass"
-      "sprockets"
-      "sprockets-rails"
-    ];
+    version = "0.7.2";
   };
-  "sawyer" = {
-    version = "0.6.0";
+  doorkeeper = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wim84wkvx758cfb8q92w3hhvnfbwr990x1mmfv1ss1ivjz8fmm0";
       type = "gem";
-      sha256 = "0fk43bzwn816qj1ksiicm2i1kmzv5675cmnvk57kmfmi4rfsyjpy";
     };
-    dependencies = [
-      "addressable"
-      "faraday"
-    ];
+    version = "2.2.2";
   };
-  "sdoc" = {
-    version = "0.3.20";
+  domain_name = {
+    dependencies = ["unf"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav";
       type = "gem";
-      sha256 = "17l8qk0ld47z4h5avcnylvds8nc6dp25zc64w23z8li2hs341xf2";
     };
-    dependencies = [
-      "json"
-      "rdoc"
-    ];
+    version = "0.5.25";
   };
-  "seed-fu" = {
-    version = "2.3.5";
+  docile = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx";
       type = "gem";
-      sha256 = "11xja82yxir1kwccrzng29h7w911i9j0xj2y7y949yqnw91v12vw";
     };
-    dependencies = [
-      "activerecord"
-      "activesupport"
-    ];
+    version = "1.1.5";
   };
-  "select2-rails" = {
-    version = "3.5.9.3";
+  diffy = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0il0ri511g9rm88qbvncbzgwc6wk6265hmnf7grcczmrs1z49vl0";
       type = "gem";
-      sha256 = "0ni2k74n73y3gv56gs37gkjlh912szjf6k9j483wz41m3xvlz7fj";
     };
-    dependencies = [
-      "thor"
-    ];
+    version = "3.0.7";
   };
-  "settingslogic" = {
-    version = "2.0.9";
+  diff-lcs = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vf9civd41bnqi6brr5d9jifdw73j9khc6fkhfl1f8r9cpkdvlx1";
       type = "gem";
-      sha256 = "1ria5zcrk1nf0b9yia15mdpzw0dqr6wjpbj8dsdbbps81lfsj9ar";
     };
+    version = "1.2.5";
   };
-  "sexp_processor" = {
-    version = "4.6.0";
+  devise-two-factor = {
+    dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v2wva971ds48af47rj4ywavlmz7qzbmf1jpf1l3xn3mscz52hln";
       type = "gem";
-      sha256 = "0gxlcpg81wfjf5gpggf8h6l2dbq3ikgavbrr2yfw3m2vqy88yjg2";
     };
+    version = "2.0.1";
   };
-  "sham_rack" = {
-    version = "1.3.6";
+  devise-async = {
+    dependencies = ["devise"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11llg7ggzpmg4lb9gh4sx55spvp98sal5r803gjzamps9crfq6mm";
       type = "gem";
-      sha256 = "0zs6hpgg87x5jrykjxgfp2i7m5aja53s5kamdhxam16wki1hid3i";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "0.9.0";
   };
-  "shellany" = {
-    version = "0.0.1";
+  devise = {
+    dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "thread_safe" "warden"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00h0xdl4a8pjpb0gbgy4w6q9j2mpczkmj23195zmjrg2b1gl8f2q";
       type = "gem";
-      sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
     };
+    version = "3.5.4";
   };
-  "shoulda-matchers" = {
-    version = "2.8.0";
+  descendants_tracker = {
+    dependencies = ["thread_safe"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79";
       type = "gem";
-      sha256 = "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0";
     };
-    dependencies = [
-      "activesupport"
-    ];
+    version = "0.0.4";
   };
-  "sidekiq" = {
-    version = "3.3.0";
+  default_value_for = {
+    dependencies = ["activerecord"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z4lrba4y1c3y0rxw8321qbwsb3nr6c2igrpksfvz93yhc9m6xm0";
       type = "gem";
-      sha256 = "0xwy2n4jaja82gw11q1qsqc2jp7hp2asxhfr0gkfb58wj7k5y32l";
     };
-    dependencies = [
-      "celluloid"
-      "connection_pool"
-      "json"
-      "redis"
-      "redis-namespace"
-    ];
+    version = "3.0.1";
   };
-  "sidetiq" = {
-    version = "0.6.3";
+  debugger-ruby_core_source = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lp5dmm8a8dpwymv6r1y6yr24wxsj0gvgb2b8i7qq9rcv414snwd";
       type = "gem";
-      sha256 = "1sylv1nyrn7w3782fh0f5svjqricr53vacf4kkvx3l2azzymc2am";
     };
-    dependencies = [
-      "celluloid"
-      "ice_cube"
-      "sidekiq"
-    ];
+    version = "1.3.8";
   };
-  "simple_oauth" = {
-    version = "0.1.9";
+  debug_inspector = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "109761g00dbrw5q0dfnbqg8blfm699z4jj70l4zrgf9mzn7ii50m";
       type = "gem";
-      sha256 = "0bb06p88xsdw4fxll1ikv5i5k58sl6y323ss0wp1hqjm3xw1jgvj";
     };
+    version = "0.0.2";
   };
-  "simplecov" = {
-    version = "0.10.0";
+  database_cleaner = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n5r7kvsmknk876v3scdphfnvllr9157fa5q7j5fczg8j5qm6kf0";
       type = "gem";
-      sha256 = "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4";
     };
-    dependencies = [
-      "docile"
-      "json"
-      "simplecov-html"
-    ];
+    version = "1.4.1";
   };
-  "simplecov-html" = {
-    version = "0.10.0";
+  daemons = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b839hryy9sg7x3knsa1d6vfiyvn0mlsnhsb6an8zsalyrz1zgqg";
       type = "gem";
-      sha256 = "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf";
     };
+    version = "1.2.3";
   };
-  "sinatra" = {
-    version = "1.4.6";
+  d3_rails = {
+    dependencies = ["railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12vxiiflnnkcxak2wmbajyf5wzmcv9wkl4drsp0am72azl8a6g9x";
       type = "gem";
-      sha256 = "1hhmwqc81ram7lfwwziv0z70jh92sj1m7h7s9fr0cn2xq8mmn8l7";
     };
-    dependencies = [
-      "rack"
-      "rack-protection"
-      "tilt"
-    ];
+    version = "3.5.11";
   };
-  "six" = {
-    version = "0.2.0";
+  creole = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm";
       type = "gem";
-      sha256 = "1bhapiyjh5r5qjpclfw8i65plvy6k2q4azr5xir63xqglr53viw3";
     };
+    version = "0.5.0";
   };
-  "slack-notifier" = {
-    version = "1.0.0";
+  crack = {
+    dependencies = ["safe_yaml"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
       type = "gem";
-      sha256 = "0v4kd0l83shmk17qb35lighxjq9j7g3slnkrsyiy36kaqcfrjm97";
     };
+    version = "0.4.3";
   };
-  "slim" = {
-    version = "2.0.3";
+  coveralls = {
+    dependencies = ["json" "rest-client" "simplecov" "term-ansicolor" "thor" "tins"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03vnvcw1fdmkp3405blcxpsjf89jxd2061474a32fchsmv2das9y";
       type = "gem";
-      sha256 = "1z279vis4z2xsjzf568pxcl2gd1az760ij13d6qzx400mgn7nqxs";
     };
-    dependencies = [
-      "temple"
-      "tilt"
-    ];
+    version = "0.8.9";
   };
-  "slop" = {
-    version = "3.6.0";
+  connection_pool = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b2bb3k39ni5mzcnqlv9y4yjkbin20s7dkwzp0jw2jf1rmzcgrmy";
       type = "gem";
-      sha256 = "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n";
     };
+    version = "2.2.0";
   };
-  "spinach" = {
-    version = "0.8.10";
+  concurrent-ruby = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qqdgcfkzv90nznrpsvg3cgg5xiqz4c8hnv7va5gm4fp4lf4k85v";
       type = "gem";
-      sha256 = "0phfjs4iw2iqxdaljzwk6qxmi2x86pl3hirmpgw2pgfx76wfx688";
     };
-    dependencies = [
-      "colorize"
-      "gherkin-ruby"
-      "json"
-    ];
+    version = "1.0.0";
   };
-  "spinach-rails" = {
-    version = "0.2.1";
+  colorize = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16bsjcqb6pg3k94dh1l5g3hhx5g2g4g8rlr76dnc78yyzjjrbayn";
       type = "gem";
-      sha256 = "1nfacfylkncfgi59g2wga6m4nzdcjqb8s50cax4nbx362ap4bl70";
     };
-    dependencies = [
-      "capybara"
-      "railties"
-      "spinach"
-    ];
+    version = "0.7.7";
   };
-  "spring" = {
-    version = "1.3.6";
+  coffee-script-source = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k4fg39rrkl3bpgchfj94fbl9s4ysaz16w8dkqncf2vyf79l3qz0";
       type = "gem";
-      sha256 = "0xvz2x6nvza5i53p7mddnf11j2wshqmbaphi6ngd6nar8v35y0k1";
     };
+    version = "1.10.0";
   };
-  "spring-commands-rspec" = {
-    version = "1.0.4";
+  coffee-script = {
+    dependencies = ["coffee-script-source" "execjs"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
       type = "gem";
-      sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
     };
-    dependencies = [
-      "spring"
-    ];
+    version = "2.4.1";
   };
-  "spring-commands-spinach" = {
-    version = "1.0.0";
+  coffee-rails = {
+    dependencies = ["coffee-script" "railties"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p3zhs44gsy1p90nmghihzfyl7bsk8kv6j3q7rj3bn74wg8w7nqs";
       type = "gem";
-      sha256 = "138jardqyj96wz68njdgy55qjbpl2d0g8bxbkz97ndaz3c2bykv9";
     };
-    dependencies = [
-      "spring"
-    ];
+    version = "4.1.0";
   };
-  "spring-commands-teaspoon" = {
-    version = "0.0.2";
+  coercible = {
+    dependencies = ["descendants_tracker"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p5azydlsz0nkxmcq0i1gzmcfq02lgxc4as7wmf47j1c6ljav0ah";
       type = "gem";
-      sha256 = "1g7n4m2s9d0frh7y1xibzpphqajfnx4fvgfc66nh545dd91w2nqz";
     };
-    dependencies = [
-      "spring"
-    ];
+    version = "1.0.0";
   };
-  "sprockets" = {
-    version = "2.12.4";
+  coderay = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s";
       type = "gem";
-      sha256 = "15818683yz27w4hgywccf27n91azy9a4nmb5qkklzb08k8jw9gp3";
     };
-    dependencies = [
-      "hike"
-      "multi_json"
-      "rack"
-      "tilt"
-    ];
+    version = "1.1.0";
   };
-  "sprockets-rails" = {
-    version = "2.3.2";
+  cliver = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
       type = "gem";
-      sha256 = "1pk2a69cxirg2dkkpl5cr3fvrj1qgifw1fmpz1ggkcziwxajyg6d";
     };
-    dependencies = [
-      "actionpack"
-      "activesupport"
-      "sprockets"
-    ];
+    version = "0.3.2";
   };
-  "stamp" = {
-    version = "0.5.0";
+  chunky_png = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vf0axgrm95bs3y0x5gdb76xawfh210yxplj7jbwr6z7n88i1axn";
       type = "gem";
-      sha256 = "1w54kxm4sd4za9rhrkl5lqjbsalhziq95sr3nnwr1lqc00nn5mhs";
     };
+    version = "1.3.5";
   };
-  "state_machine" = {
-    version = "1.2.0";
+  charlock_holmes = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jsl6k27wjmssxbwv9wpf7hgp9r0nvizcf6qpjnr7qs2nia53lf7";
       type = "gem";
-      sha256 = "1vf25h443b1s98d2lhd1w3rgam86pjsjhz632f3yrfkn374xvz40";
     };
+    version = "0.7.3";
   };
-  "stringex" = {
-    version = "2.5.2";
+  cause = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0digirxqlwdg79mkbn70yc7i9i1qnclm2wjbrc47kqv6236bpj00";
       type = "gem";
-      sha256 = "150adm7rfh6r9b5ra6vk75mswf9m3wwyslcf8f235a08m29fxa17";
     };
+    version = "0.1";
   };
-  "systemu" = {
-    version = "2.6.5";
+  carrierwave = {
+    dependencies = ["activemodel" "activesupport" "json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b1av1ancby6brhmypl5k8xwrasd8bd3kqp9ri8kbq7z8nj6k445";
       type = "gem";
-      sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
     };
+    version = "0.9.0";
   };
-  "task_list" = {
-    version = "1.0.2";
+  capybara-screenshot = {
+    dependencies = ["capybara" "launchy"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17v1wihr3aqrxhrwswkdpdklj1xsfcaksblh1y8hixvm9bqfyz3y";
       type = "gem";
-      sha256 = "1iv1fizb04463c4mp4gxd8v0414fhvmiwvwvjby5b9qq79d8zwab";
     };
-    dependencies = [
-      "html-pipeline"
-    ];
+    version = "1.0.11";
   };
-  "teaspoon" = {
-    version = "1.0.2";
+  capybara = {
+    dependencies = ["mime-types" "nokogiri" "rack" "rack-test" "xpath"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "114k4xi4nfbp3jfbxgwa3fksbwsyibx74gbdqpcgg3dxpmzkaa4f";
       type = "gem";
-      sha256 = "0cprz18vgf0jgcggcxf4pwx8jcwbiyj1p0dnck5aavlvaxaic58s";
     };
-    dependencies = [
-      "railties"
-    ];
+    version = "2.4.4";
   };
-  "teaspoon-jasmine" = {
-    version = "2.2.0";
+  cal-heatmap-rails = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lrmcyj3iixkprqi9fb9vcn97wpp779sl5hxxgx57r3rb7l4d20w";
       type = "gem";
-      sha256 = "00wygrv1jm4aj15p1ab9d5fdrj6y83kv26xgp52mx4lp78h2ms9q";
     };
-    dependencies = [
-      "teaspoon"
-    ];
+    version = "3.5.1";
   };
-  "temple" = {
-    version = "0.6.10";
+  byebug = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yx89b7vh5mbvxyi8n7zl25ia1bqdj71995m4daj6d41rnkmrpnc";
       type = "gem";
-      sha256 = "1lzz4bisg97725m1q62jhmcxklfhky7g326d0b7p2q0kjx262q81";
     };
+    version = "8.2.1";
   };
-  "term-ansicolor" = {
-    version = "1.3.2";
+  bundler-audit = {
+    dependencies = ["thor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0msv3k2277y7al5lbnw7q9lmb5fnrscpkmsb36wpn189pdq0akfv";
       type = "gem";
-      sha256 = "0ydbbyjmk5p7fsi55ffnkq79jnfqx65c3nj8d9rpgl6sw85ahyys";
     };
-    dependencies = [
-      "tins"
-    ];
+    version = "0.4.0";
   };
-  "terminal-table" = {
-    version = "1.5.2";
+  bullet = {
+    dependencies = ["activesupport" "uniform_notifier"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h3iaflcz5a1xr32bdb8sk4nx06yhh5d8y7w294w49xigfv4hzj3";
       type = "gem";
-      sha256 = "1s6qyj9ir1agbbi32li9c0c34dcl0klyxqif6mxy0dbvq7kqfp8f";
     };
+    version = "4.14.10";
   };
-  "test_after_commit" = {
-    version = "0.2.7";
+  builder = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2";
       type = "gem";
-      sha256 = "179dgdpsmn9lcxxkyrxxvmyj4x3xi9sdq80l3zfqcgprnbxavbp7";
     };
-    dependencies = [
-      "activerecord"
-    ];
+    version = "3.2.2";
   };
-  "thin" = {
-    version = "1.6.3";
+  browser = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01bkb64w2ld2q5r3chc4f6spbjrmginyg8wlzg130zmx2z4jia2h";
       type = "gem";
-      sha256 = "1m56aygh5rh8ncp3s2gnn8ghn5ibkk0bg6s3clmh1vzaasw2lj4i";
     };
-    dependencies = [
-      "daemons"
-      "eventmachine"
-      "rack"
-    ];
+    version = "1.0.1";
   };
-  "thor" = {
-    version = "0.19.1";
+  brakeman = {
+    dependencies = ["erubis" "fastercsv" "haml" "highline" "multi_json" "ruby2ruby" "ruby_parser" "safe_yaml" "sass" "slim" "terminal-table"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15v13yizpvp1rm86raqggmsmm51v6p8fqw3pfgi6xpvx1ba06cfm";
       type = "gem";
-      sha256 = "08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z";
     };
+    version = "3.1.4";
   };
-  "thread_safe" = {
-    version = "0.3.5";
+  bootstrap-sass = {
+    dependencies = ["autoprefixer-rails" "sass"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12hhw42hk9clwfj6yz5v0c5p35wrn5yjnji7bnzsfs99vi2q00ld";
       type = "gem";
-      sha256 = "1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr";
     };
+    version = "3.3.6";
   };
-  "tilt" = {
-    version = "1.4.1";
+  binding_of_caller = {
+    dependencies = ["debug_inspector"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15jg6dkaq2nzcd602d7ppqbdxw3aji961942w93crs6qw4n6h9yk";
       type = "gem";
-      sha256 = "00sr3yy7sbqaq7cb2d2kpycajxqf1b1wr1yy33z4bnzmqii0b0ir";
     };
+    version = "0.7.2";
   };
-  "timers" = {
-    version = "4.0.4";
+  better_errors = {
+    dependencies = ["coderay" "erubis"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v0q8bdkqqlcsfqbk4wvc3qnz8an44mgz720v5f11a4nr413mjgf";
       type = "gem";
-      sha256 = "1jx4wb0x182gmbcs90vz0wzfyp8afi1mpl9w5ippfncyk4kffvrz";
     };
-    dependencies = [
-      "hitimes"
-    ];
+    version = "1.0.1";
   };
-  "timfel-krb5-auth" = {
-    version = "0.8.3";
+  benchmark-ips = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh681m54qdsdyvpvflj1wpnj3ybspbpjkr4cnlrl4nk4yikli0j";
       type = "gem";
-      sha256 = "105vajc0jkqgcx1wbp0ad262sdry4l1irk7jpaawv8vzfjfqqf5b";
     };
+    version = "2.3.0";
   };
-  "tinder" = {
-    version = "1.9.4";
+  bcrypt = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15cf7zzlj9b0xcx12jf8fmnpc8g1b0yhxal1yr5p7ny3mrz5pll6";
       type = "gem";
-      sha256 = "0gl5kln3dgybgarksk2ly4y0wy2lljsh59idfllwzynap8hx9jar";
     };
-    dependencies = [
-      "eventmachine"
-      "faraday"
-      "faraday_middleware"
-      "hashie"
-      "json"
-      "mime-types"
-      "multi_json"
-      "twitter-stream"
-    ];
+    version = "3.1.10";
   };
-  "tins" = {
-    version = "1.6.0";
+  babosa = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05rgxg4pz4bc4xk34w5grv0yp1j94wf571w84lf3xgqcbs42ip2f";
       type = "gem";
-      sha256 = "02qarvy17nbwvslfgqam8y6y7479cwmb1a6di9z18hzka4cf90hz";
     };
+    version = "1.0.2";
   };
-  "trollop" = {
-    version = "2.1.2";
+  axiom-types = {
+    dependencies = ["descendants_tracker" "ice_nine" "thread_safe"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10q3k04pll041mkgy0m5fn2b1lazm6ly1drdbcczl5p57lzi3zy1";
       type = "gem";
-      sha256 = "0415y63df86sqj43c0l82and65ia5h64if7n0znkbrmi6y0jwhl8";
     };
+    version = "0.1.1";
   };
-  "turbolinks" = {
-    version = "2.5.3";
+  awesome_print = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k85hckprq0s9pakgadf42k1d5s07q23m3y6cs977i6xmwdivyzr";
       type = "gem";
-      sha256 = "1ddrx25vvvqxlz4h59lrmjhc2bfwxf4bpicvyhgbpjd48ckj81jn";
     };
-    dependencies = [
-      "coffee-rails"
-    ];
+    version = "1.2.0";
   };
-  "twitter-stream" = {
-    version = "0.1.16";
+  autoprefixer-rails = {
+    dependencies = ["execjs" "json"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0m1w42ncz0p48r5hbyglayxkzrnplw18r99dc1ia2cb3nizkwllx";
       type = "gem";
-      sha256 = "0is81g3xvnjk64sqiaqlh2ziwfryzwvk1yvaniryg0zhppgsyriq";
     };
-    dependencies = [
-      "eventmachine"
-      "http_parser.rb"
-      "simple_oauth"
-    ];
+    version = "6.2.3";
   };
-  "tzinfo" = {
-    version = "1.2.2";
+  attr_required = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pawa2i7gw9ppj6fq6y288da1ncjpzsmc6kx7z63mjjvypa5q3dc";
       type = "gem";
-      sha256 = "1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx";
     };
-    dependencies = [
-      "thread_safe"
-    ];
+    version = "1.0.0";
   };
-  "uglifier" = {
-    version = "2.3.3";
+  attr_encrypted = {
+    dependencies = ["encryptor"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hm2844qm37kflqq5v0x2irwasbhcblhp40qk10m3wlkj4m9wp8p";
       type = "gem";
-      sha256 = "0v45v2hccmadxpqrlk8gj9sgyak4d6838014wizdvzkh8sy23nvr";
     };
-    dependencies = [
-      "execjs"
-      "json"
-    ];
+    version = "1.3.4";
   };
-  "underscore-rails" = {
-    version = "1.4.4";
+  astrolabe = {
+    dependencies = ["parser"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ybbmjxaf529vvhrj4y8d4jpf87f3hgczydzywyg1d04gggjx7l7";
       type = "gem";
-      sha256 = "1xg3dfym38gj5zsjxpf1v5cz4j6gysirv9bgc5ls37krixkajag2";
     };
+    version = "1.3.1";
   };
-  "unf" = {
-    version = "0.1.4";
+  ast = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "102bywfxrv0w3n4s6lg25d7xxshd344sc7ijslqmganj5bany1pk";
       type = "gem";
-      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
     };
-    dependencies = [
-      "unf_ext"
-    ];
+    version = "2.1.0";
   };
-  "unf_ext" = {
-    version = "0.0.7.1";
+  asciidoctor = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0q9yhan2mkk1lh15zcfd9g2fn6faix9yrf5skg23dp1y77jv7vm0";
       type = "gem";
-      sha256 = "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b";
     };
+    version = "1.5.3";
   };
-  "unicorn" = {
-    version = "4.8.3";
+  asana = {
+    dependencies = ["faraday" "faraday_middleware" "faraday_middleware-multi_json" "oauth2"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1560p13g57pl4xqkmhwn1vpqhm7mw9fwmmswk38k3i2r7g0b5y9z";
       type = "gem";
-      sha256 = "1kpg2vikx2hxdyrl45bqcr89a0w59hfw7yn7xh87bmlczi34xds4";
     };
-    dependencies = [
-      "kgio"
-      "rack"
-      "raindrops"
-    ];
+    version = "0.4.0";
   };
-  "unicorn-worker-killer" = {
-    version = "0.4.3";
+  arel = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk";
       type = "gem";
-      sha256 = "0hhss1bwammh7nhplcj90455h79yq10c30npz4lpcsgw7vcpls00";
     };
-    dependencies = [
-      "get_process_mem"
-      "unicorn"
-    ];
+    version = "6.0.3";
   };
-  "uuid" = {
-    version = "2.3.8";
+  annotate = {
+    dependencies = ["activerecord" "rake"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wdw9phsv2dndgid3pd8h0hl4zycwy11jc9iz6prwza0xax0i7hg";
       type = "gem";
-      sha256 = "0gr2mxg27l380wpiy66mgv9wq02myj6m4gmp6c4g1vsbzkh0213v";
     };
-    dependencies = [
-      "macaddr"
-    ];
+    version = "2.6.10";
+  };
+  allocations = {
+    version = "1.0.4";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0iynf7gkbnbr5mgl2wgbgvxmjdiawh7ywwbnyjm94bj3pkybzgkc";
+    };
   };
-  "version_sorter" = {
+  akismet = {
     version = "2.0.0";
     source = {
       type = "gem";
-      sha256 = "1lad9c43w2xfzmva57ia6glpmhyivyk1m79jli42canshvan5v6y";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hqpn25iyypkwkrqaibjm5nss5jmlkrddhia7frmz94prvyjr02w";
     };
   };
-  "virtus" = {
-    version = "1.0.5";
+  after_commit_queue = {
+    dependencies = ["activerecord"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jrhvj4335dsrj0xndbf7a7m2inbwbx1knc0bwgvmkk1w47l43s0";
       type = "gem";
-      sha256 = "06iphwi3c4f7y9i2rvhvaizfswqbaflilziz4dxqngrdysgkn1fk";
     };
-    dependencies = [
-      "axiom-types"
-      "coercible"
-      "descendants_tracker"
-      "equalizer"
-    ];
+    version = "1.3.0";
   };
-  "warden" = {
-    version = "1.2.3";
+  addressable = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1533axm85gpz267km9gnfarf9c78g2scrysd6b8yw33vmhkz2km6";
       type = "gem";
-      sha256 = "0ykzsgwml0pdqn6vdjjaix12gpcgn8b126z9fx7yq3r3bmdrwxlp";
     };
-    dependencies = [
-      "rack"
-    ];
+    version = "2.3.8";
   };
-  "webmock" = {
-    version = "1.21.0";
+  acts-as-taggable-on = {
+    dependencies = ["activerecord"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bz0z8dlp3fjzah9y9b6rr9mkidsav9l4hdm51fnq1gd05yv3pr7";
       type = "gem";
-      sha256 = "1p7hqdxk5359xwp59pcx841fhbnqx01ra98rnwhdyz61nrc6piv3";
     };
-    dependencies = [
-      "addressable"
-      "crack"
-    ];
+    version = "3.5.0";
   };
-  "websocket-driver" = {
-    version = "0.6.2";
+  activesupport = {
+    dependencies = ["i18n" "json" "minitest" "thread_safe" "tzinfo"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16zgsvzwwf4hx3ywi2lz0dcm6d1ljsy6zr5k2q41amd7g62d886d";
       type = "gem";
-      sha256 = "0y4kc2q2g69i4xdcn85bn7v7g6ia3znr687aivakmlzcanyiz7in";
     };
-    dependencies = [
-      "websocket-extensions"
-    ];
+    version = "4.2.5.1";
   };
-  "websocket-extensions" = {
+  activerecord-session_store = {
+    dependencies = ["actionpack" "activerecord" "railties"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rp5q0q5i5syfgw7qpiq3a42x13p7myyv1c5hmnczpdlh57axs3p";
+      type = "gem";
+    };
     version = "0.1.2";
+  };
+  activerecord-nulldb-adapter = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ym3paxp5lqr2kr4hkqj6xxqvgl57fv8jqhvgjfxb9lk7k5jlfmp";
       type = "gem";
-      sha256 = "07qnsafl6203a2zclxl20hy4jq11c471cgvd0bj5r9fx1qqw06br";
     };
+    version = "0.3.2";
   };
-  "whenever" = {
-    version = "0.8.4";
+  activerecord-deprecated_finders = {
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03xplckz7v3nm6inqkwdd44h6gpbpql0v02jc1rz46a38rd6cj6m";
       type = "gem";
-      sha256 = "1bs602cf5rmmj03chn8vwidx0z1psyfyabq6gs3mqna524pnj9h2";
     };
-    dependencies = [
-      "activesupport"
-      "chronic"
-    ];
+    version = "1.0.4";
   };
-  "wikicloth" = {
-    version = "0.8.1";
+  activerecord = {
+    dependencies = ["activemodel" "activesupport" "arel"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qj5ii36yn9kb0ljnl05xgpgvs7j9l20yg2phsssy0j31g1ymmc5";
       type = "gem";
-      sha256 = "1jp6c2yzyqbap8jdiw8yz6l08sradky1llhyhmrg934l1b5akj3s";
     };
-    dependencies = [
-      "builder"
-      "expression_parser"
-      "rinku"
-    ];
+    version = "4.2.5.1";
   };
-  "xpath" = {
-    version = "2.0.0";
+  activemodel = {
+    dependencies = ["activesupport" "builder"];
     source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zr83avw82infmzdzpilk6xpv5r9fr8pxgf5ql16b3vysp6va57p";
+      type = "gem";
+    };
+    version = "4.2.5.1";
+  };
+  activejob = {
+    dependencies = ["activesupport" "globalid"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xfj7lwp1v3k9zscavzq87wbbn6y825angz4zpx4xsvlwf3dn7jc";
       type = "gem";
-      sha256 = "04kcr127l34p7221z13blyl0dvh0bmxwx326j72idayri36a394w";
     };
-    dependencies = [
-      "nokogiri"
-    ];
+    version = "4.2.5.1";
+  };
+  actionview = {
+    dependencies = ["activesupport" "builder" "erubis" "rails-dom-testing" "rails-html-sanitizer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dp1gqh0yxpyydza1ada0jjbpww97qhnkj9c9pm9rg5jbmpzg12m";
+      type = "gem";
+    };
+    version = "4.2.5.1";
+  };
+  actionpack = {
+    dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13shdiwjfyqvfb11k0wqhcd7p7ix168fxd5l8m2pnn0bzskpswxv";
+      type = "gem";
+    };
+    version = "4.2.5.1";
+  };
+  actionmailer = {
+    dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fxn8f53nnpgan5xl9i5lszl1m8yk4q6ayc33d9xfzsnvhavpl4n";
+      type = "gem";
+    };
+    version = "4.2.5.1";
+  };
+  ace-rails-ap = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "082n12rkd9j7d89030nhmi4fx1gqaf13knps6cknsyvwix7fryvv";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  RedCloth = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06pahxyrckhgb7alsxwhhlx1ib2xsx33793finj01jk8i054bkxl";
+      type = "gem";
+    };
+    version = "4.2.9";
+  };
+  CFPropertyList = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mjb46368z4hiax3fcsgxk14fxrhwnvcmakc2f5sx8nz0wvvkwg2";
+      type = "gem";
+    };
+    version = "2.3.2";
   };
 }
\ No newline at end of file
diff --git a/pkgs/applications/version-management/gitlab/nulladapter.patch b/pkgs/applications/version-management/gitlab/nulladapter.patch
new file mode 100644
index 00000000000..0d5c1749e83
--- /dev/null
+++ b/pkgs/applications/version-management/gitlab/nulladapter.patch
@@ -0,0 +1,29 @@
+index acd1874..f493451 100644
+--- a/Gemfile
++++ b/Gemfile
+@@ -318,3 +318,5 @@ gem 'oauth2', '~> 1.0.0'
+ 
+ # Soft deletion
+ gem "paranoia", "~> 2.0"
++
++gem "activerecord-nulldb-adapter"
+index 14d2c76..7a010f0 100644
+--- a/Gemfile.lock
++++ b/Gemfile.lock
+@@ -34,6 +34,8 @@ GEM
+       activesupport (= 4.2.5.1)
+       arel (~> 6.0)
+     activerecord-deprecated_finders (1.0.4)
++    activerecord-nulldb-adapter (0.3.2)
++      activerecord (>= 2.0.0)
+     activerecord-session_store (0.1.2)
+       actionpack (>= 4.0.0, < 5)
+       activerecord (>= 4.0.0, < 5)
+@@ -880,6 +882,7 @@ DEPENDENCIES
+   RedCloth (~> 4.2.9)
+   ace-rails-ap (~> 2.0.1)
+   activerecord-deprecated_finders (~> 1.0.3)
++  activerecord-nulldb-adapter
+   activerecord-session_store (~> 0.1.0)
+   acts-as-taggable-on (~> 3.4)
+   addressable (~> 2.3.8)
diff --git a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch
index 1df5226c82f..d188070296c 100644
--- a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch
+++ b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch
@@ -1,8 +1,8 @@
 diff --git a/config/environments/production.rb b/config/environments/production.rb
-index 3316ece..c34dec0 100644
+index 9095266..694a4c5 100644
 --- a/config/environments/production.rb
 +++ b/config/environments/production.rb
-@@ -67,10 +67,10 @@ Gitlab::Application.configure do
+@@ -67,10 +67,10 @@ Rails.application.configure do
  
    config.action_mailer.delivery_method = :sendmail
    # Defaults to:
@@ -18,74 +18,10 @@ index 3316ece..c34dec0 100644
    config.action_mailer.raise_delivery_errors = true
  
 diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
-index 15930fc..bdb423c 100644
+index 05f127d..1daef74 100644
 --- a/config/gitlab.yml.example
 +++ b/config/gitlab.yml.example
-@@ -29,8 +29,8 @@ production: &base
-   ## GitLab settings
-   gitlab:
-     ## Web server settings (note: host is the FQDN, do not include http://)
--    host: localhost
--    port: 80 # Set to 443 if using HTTPS, see installation.md#using-https for additional HTTPS configuration details
-+    host: <%= ENV['GITLAB_HOST'] || 'localhost' %>
-+    port: <%= ENV['GITLAB_PORT'] || 80 %>
-     https: false # Set to true if using HTTPS, see installation.md#using-https for additional HTTPS configuration details
- 
-     # Uncommment this line below if your ssh host is different from HTTP/HTTPS one
-@@ -43,7 +43,7 @@ production: &base
-     # relative_url_root: /gitlab
- 
-     # Uncomment and customize if you can't use the default user to run GitLab (default: 'git')
--    # user: git
-+    user: gitlab
- 
-     ## Date & Time settings
-     # Uncomment and customize if you want to change the default time zone of GitLab application.
-@@ -54,7 +54,7 @@ production: &base
-     # Uncomment and set to false if you need to disable email sending from GitLab (default: true)
-     # email_enabled: true
-     # Email address used in the "From" field in mails sent by GitLab
--    email_from: example@example.com
-+    email_from: <%= ENV['GITLAB_EMAIL_FROM'] %>
-     email_display_name: GitLab
-     email_reply_to: noreply@example.com
- 
-@@ -298,12 +298,12 @@ production: &base
-   # GitLab Satellites
-   satellites:
-     # Relative paths are relative to Rails.root (default: tmp/repo_satellites/)
--    path: /home/git/gitlab-satellites/
-+    path: <%= ENV['GITLAB_SATELLITES_PATH'] %>
-     timeout: 30
- 
-   ## Backup settings
-   backup:
--    path: "tmp/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
-+    path: <%= ENV['GITLAB_BACKUP_PATH'] %>
-     # archive_permissions: 0640 # Permissions for the resulting backup.tar file (default: 0600)
-     # keep_time: 604800   # default: 0 (forever) (in seconds)
-     # pg_schema: public     # default: nil, it means that all schemas will be backed up
-@@ -322,15 +322,15 @@ production: &base
- 
-   ## GitLab Shell settings
-   gitlab_shell:
--    path: /home/git/gitlab-shell/
-+    path: <%= ENV['GITLAB_SHELL_PATH'] %>
- 
-     # REPOS_PATH MUST NOT BE A SYMLINK!!!
--    repos_path: /home/git/repositories/
--    hooks_path: /home/git/gitlab-shell/hooks/
-+    repos_path: <%= ENV['GITLAB_REPOSITORIES_PATH'] %>
-+    hooks_path: <%= ENV['GITLAB_SHELL_HOOKS_PATH'] %>
- 
-     # File that contains the secret key for verifying access for gitlab-shell.
-     # Default is '.gitlab_shell_secret' relative to Rails.root (i.e. root of the GitLab app).
--    # secret_file: /home/git/gitlab/.gitlab_shell_secret
-+    secret_file: <%= ENV['GITLAB_SHELL_SECRET_PATH'] %>
- 
-     # Git over HTTP
-     upload_pack: true
-@@ -343,7 +343,7 @@ production: &base
+@@ -423,7 +422,7 @@ production: &base
    # CAUTION!
    # Use the default values unless you really know what you are doing
    git:
@@ -94,25 +30,82 @@ index 15930fc..bdb423c 100644
      # The next value is the maximum memory size grit can use
      # Given in number of bytes per git object (e.g. a commit)
      # This value can be increased if you have very large commits
-@@ -388,7 +388,7 @@ test:
-   gravatar:
-     enabled: true
-   gitlab:
--    host: localhost
-+    host: <%= ENV['GITLAB_HOST'] %>
-     port: 80
+
+diff --git a/lib/gitlab/logger.rb b/lib/gitlab/logger.rb
+index 59b2114..4f4a39a 100644
+--- a/lib/gitlab/logger.rb
++++ b/lib/gitlab/logger.rb
+@@ -13,20 +13,20 @@ module Gitlab
+     end
  
-     # When you run tests we clone and setup gitlab-shell
-diff --git a/lib/gitlab/app_logger.rb b/lib/gitlab/app_logger.rb
-index dddcb25..d61f10a 100644
---- a/lib/gitlab/app_logger.rb
-+++ b/lib/gitlab/app_logger.rb
-@@ -1,7 +1,7 @@
- module Gitlab
-   class AppLogger < Gitlab::Logger
-     def self.file_name_noext
--      'application'
-+      ENV["GITLAB_APPLICATION_LOG_PATH"]
+     def self.read_latest
+-      path = Rails.root.join("log", file_name)
++      path = File.join(ENV["GITLAB_LOG_PATH"], file_name)
+       self.build unless File.exist?(path)
+       tail_output, _ = Gitlab::Popen.popen(%W(tail -n 2000 #{path}))
+       tail_output.split("\n")
      end
  
-     def format_message(severity, timestamp, progname, msg)
+     def self.read_latest_for(filename)
+-      path = Rails.root.join("log", filename)
++      path = File.join(ENV["GITLAB_LOG_PATH"], filename)
+       tail_output, _ = Gitlab::Popen.popen(%W(tail -n 2000 #{path}))
+       tail_output.split("\n")
+     end
+ 
+     def self.build
+-      new(Rails.root.join("log", file_name))
++      new(File.join(ENV["GITLAB_LOG_PATH"], file_name))
+     end
+   end
+ end
+diff --git a/lib/gitlab/uploads_transfer.rb b/lib/gitlab/uploads_transfer.rb
+index be8fcc7..7642d74 100644
+--- a/lib/gitlab/uploads_transfer.rb
++++ b/lib/gitlab/uploads_transfer.rb
+@@ -29,7 +29,7 @@ module Gitlab
+     end
+ 
+     def root_dir
+-      File.join(Rails.root, "public", "uploads")
++      ENV['GITLAB_UPLOADS_PATH'] || File.join(Rails.root, "public", "uploads")
+     end
+   end
+ end
+diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
+index 81099cb..a40b1ad 100644
+--- a/lib/tasks/gitlab/check.rake
++++ b/lib/tasks/gitlab/check.rake
+@@ -223,7 +223,7 @@ namespace :gitlab do
+     def check_log_writable
+       print "Log directory writable? ... "
+ 
+-      log_path = Rails.root.join("log")
++      log_path = ENV["GITLAB_LOG_PATH"]
+ 
+       if File.writable?(log_path)
+         puts "yes".green
+@@ -263,10 +263,12 @@ namespace :gitlab do
+     def check_uploads
+       print "Uploads directory setup correctly? ... "
+ 
+-      unless File.directory?(Rails.root.join('public/uploads'))
++      uploads_dir = ENV['GITLAB_UPLOADS_PATH'] || Rails.root.join('public/uploads')
++
++      unless File.directory?(uploads_dir)
+         puts "no".red
+         try_fixing_it(
+-          "sudo -u #{gitlab_user} mkdir -m 750 #{Rails.root}/public/uploads"
++          "sudo -u #{gitlab_user} mkdir -m 750 #{uploads_dir}"
+         )
+         for_more_information(
+           see_installation_guide_section "GitLab"
+@@ -275,7 +277,7 @@ namespace :gitlab do
+         return
+       end
+ 
+-      upload_path = File.realpath(Rails.root.join('public/uploads'))
++      upload_path = File.realpath(Rails.root.join(uploads_dir))
+       upload_path_tmp = File.join(upload_path, 'tmp')
+ 
+       if File.stat(upload_path).mode == 040750
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f9d921d645b..af321c93a54 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1719,14 +1719,14 @@ let
   gitinspector = callPackage ../applications/version-management/gitinspector { };
 
   gitlab = callPackage ../applications/version-management/gitlab {
-    ruby = ruby_2_2_2;
+    ruby = ruby_2_2;
   };
 
   gitlab-shell = callPackage ../applications/version-management/gitlab-shell {
-    ruby = ruby_2_2_2;
+    ruby = ruby_2_2;
   };
 
-  gitlab-git-http-server = callPackage ../applications/version-management/gitlab-git-http-server { };
+  gitlab-workhorse = callPackage ../applications/version-management/gitlab-workhorse { };
 
   git-latexdiff = callPackage ../tools/typesetting/git-latexdiff { };