diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index bdaf85a03ce7..3bb7fdb9b2d6 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -172,6 +172,7 @@ kubernetes = 162; peerflix = 163; chronos = 164; + gitlab = 165; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -308,6 +309,7 @@ bosun = 157; kubernetes = 158; fleet = 159; + gitlab = 160; # When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399! diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c6980f3208b5..ec5e4e0fab4d 100755 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -176,6 +176,7 @@ ./services/misc/etcd.nix ./services/misc/felix.nix ./services/misc/folding-at-home.nix + ./services/misc/gitlab.nix ./services/misc/gitolite.nix ./services/misc/gpsd.nix ./services/misc/mesos-master.nix diff --git a/nixos/modules/services/misc/defaultUnicornConfig.rb b/nixos/modules/services/misc/defaultUnicornConfig.rb new file mode 100644 index 000000000000..81abaf336dc0 --- /dev/null +++ b/nixos/modules/services/misc/defaultUnicornConfig.rb @@ -0,0 +1,206 @@ +# The following was taken from github.com/crohr/syslogger and is BSD +# licensed. +require 'syslog' +require 'logger' +require 'thread' + +class Syslogger + + VERSION = "1.6.0" + + attr_reader :level, :ident, :options, :facility, :max_octets + attr_accessor :formatter + + MAPPING = { + Logger::DEBUG => Syslog::LOG_DEBUG, + Logger::INFO => Syslog::LOG_INFO, + Logger::WARN => Syslog::LOG_WARNING, + Logger::ERROR => Syslog::LOG_ERR, + Logger::FATAL => Syslog::LOG_CRIT, + Logger::UNKNOWN => Syslog::LOG_ALERT + } + + # + # Initializes default options for the logger + # ident:: the name of your program [default=$0]. + # options:: syslog options [default=Syslog::LOG_PID | Syslog::LOG_CONS]. + # Correct values are: + # LOG_CONS : writes the message on the console if an error occurs when sending the message; + # LOG_NDELAY : no delay before sending the message; + # LOG_PERROR : messages will also be written on STDERR; + # LOG_PID : adds the process number to the message (just after the program name) + # facility:: the syslog facility [default=nil] Correct values include: + # Syslog::LOG_DAEMON + # Syslog::LOG_USER + # Syslog::LOG_SYSLOG + # Syslog::LOG_LOCAL2 + # Syslog::LOG_NEWS + # etc. + # + # Usage: + # logger = Syslogger.new("my_app", Syslog::LOG_PID | Syslog::LOG_CONS, Syslog::LOG_LOCAL0) + # logger.level = Logger::INFO # use Logger levels + # logger.warn "warning message" + # logger.debug "debug message" + # + def initialize(ident = $0, options = Syslog::LOG_PID | Syslog::LOG_CONS, facility = nil) + @ident = ident + @options = options || (Syslog::LOG_PID | Syslog::LOG_CONS) + @facility = facility + @level = Logger::INFO + @mutex = Mutex.new + @formatter = Logger::Formatter.new + end + + %w{debug info warn error fatal unknown}.each do |logger_method| + # Accepting *args as message could be nil. + # Default params not supported in ruby 1.8.7 + define_method logger_method.to_sym do |*args, &block| + return true if @level > Logger.const_get(logger_method.upcase) + message = args.first || block && block.call + add(Logger.const_get(logger_method.upcase), message) + end + + unless logger_method == 'unknown' + define_method "#{logger_method}?".to_sym do + @level <= Logger.const_get(logger_method.upcase) + end + end + end + + # Log a message at the Logger::INFO level. Useful for use with Rack::CommonLogger + def write(msg) + add(Logger::INFO, msg) + end + + # Logs a message at the Logger::INFO level. + def <<(msg) + add(Logger::INFO, msg) + end + + # Low level method to add a message. + # +severity+:: the level of the message. One of Logger::DEBUG, Logger::INFO, Logger::WARN, Logger::ERROR, Logger::FATAL, Logger::UNKNOWN + # +message+:: the message string. + # If nil, the method will call the block and use the result as the message string. + # If both are nil or no block is given, it will use the progname as per the behaviour of both the standard Ruby logger, and the Rails BufferedLogger. + # +progname+:: optionally, overwrite the program name that appears in the log message. + def add(severity, message = nil, progname = nil, &block) + if message.nil? && block.nil? && !progname.nil? + message, progname = progname, nil + end + progname ||= @ident + + @mutex.synchronize do + Syslog.open(progname, @options, @facility) do |s| + s.mask = Syslog::LOG_UPTO(MAPPING[@level]) + communication = clean(message || block && block.call) + if self.max_octets + buffer = "#{tags_text}" + communication.bytes do |byte| + buffer.concat(byte) + # if the last byte we added is potentially part of an escape, we'll go ahead and add another byte + if buffer.bytesize >= self.max_octets && !['%'.ord,'\\'.ord].include?(byte) + s.log(MAPPING[severity],buffer) + buffer = "" + end + end + s.log(MAPPING[severity],buffer) unless buffer.empty? + else + s.log(MAPPING[severity],"#{tags_text}#{communication}") + end + end + end + end + + # Set the max octets of the messages written to the log + def max_octets=(max_octets) + @max_octets = max_octets + end + + # Sets the minimum level for messages to be written in the log. + # +level+:: one of Logger::DEBUG, Logger::INFO, Logger::WARN, Logger::ERROR, Logger::FATAL, Logger::UNKNOWN + def level=(level) + level = Logger.const_get(level.to_s.upcase) if level.is_a?(Symbol) + + unless level.is_a?(Fixnum) + raise ArgumentError.new("Invalid logger level `#{level.inspect}`") + end + + @level = level + end + + # Sets the ident string passed along to Syslog + def ident=(ident) + @ident = ident + end + + # Tagging code borrowed from ActiveSupport gem + def tagged(*tags) + new_tags = push_tags(*tags) + yield self + ensure + pop_tags(new_tags.size) + end + + def push_tags(*tags) + tags.flatten.reject{ |i| i.respond_to?(:empty?) ? i.empty? : !i }.tap do |new_tags| + current_tags.concat new_tags + end + end + + def pop_tags(size = 1) + current_tags.pop size + end + + def clear_tags! + current_tags.clear + end + + protected + + # Borrowed from SyslogLogger. + def clean(message) + message = message.to_s.dup + message.strip! # remove whitespace + message.gsub!(/\n/, '\\n') # escape newlines + message.gsub!(/%/, '%%') # syslog(3) freaks on % (printf) + message.gsub!(/\e\[[^m]*m/, '') # remove useless ansi color codes + message + end + + private + + def tags_text + tags = current_tags + if tags.any? + tags.collect { |tag| "[#{tag}] " }.join + end + end + + def current_tags + Thread.current[:syslogger_tagged_logging_tags] ||= [] + end +end + +worker_processes 2 +working_directory ENV["GITLAB_PATH"] +pid ENV["UNICORN_PATH"] + "/tmp/pids/unicorn.pid" + +listen ENV["UNICORN_PATH"] + "/tmp/sockets/gitlab.socket", :backlog => 1024 +listen "127.0.0.1:8080", :tcp_nopush => true + +timeout 60 + +logger Syslogger.new + +preload_app true + +GC.respond_to?(:copy_on_write_friendly=) and + GC.copy_on_write_friendly = true + +check_client_connection false + +after_fork do |server, worker| + defined?(ActiveRecord::Base) and + ActiveRecord::Base.establish_connection +end diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix new file mode 100644 index 000000000000..cbef1e434486 --- /dev/null +++ b/nixos/modules/services/misc/gitlab.nix @@ -0,0 +1,283 @@ +{ config, lib, pkgs, ... }: + +# TODO: support non-postgresql + +with lib; + +let + cfg = config.services.gitlab; + + ruby = pkgs.ruby; + rubyLibs = pkgs.rubyLibs; + + databaseYml = '' + production: + adapter: postgresql + database: ${cfg.databaseName} + host: ${cfg.databaseHost} + password: ${cfg.databasePassword} + username: ${cfg.databaseUsername} + encoding: utf8 + ''; + gitlabShellYml = '' + user: gitlab + gitlab_url: "http://localhost:8080/" + http_settings: + self_signed_cert: false + repos_path: "${cfg.stateDir}/repositories" + log_file: "${cfg.stateDir}/log/gitlab-shell.log" + redis: + bin: ${pkgs.redis}/bin/redis-cli + host: 127.0.0.1 + port: 6379 + database: 0 + namespace: resque:gitlab + ''; + + unicornConfig = builtins.readFile ./defaultUnicornConfig.rb; + + gitlab-runner = pkgs.stdenv.mkDerivation rec { + name = "gitlab-runner"; + buildInputs = [ pkgs.gitlab pkgs.rubyLibs.bundler pkgs.makeWrapper ]; + phases = "installPhase fixupPhase"; + buildPhase = ""; + installPhase = '' + mkdir -p $out/bin + makeWrapper ${rubyLibs.bundler}/bin/bundle $out/bin/gitlab-runner\ + --set RAKEOPT '"-f ${pkgs.gitlab}/share/gitlab/Rakefile"'\ + --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_BACKUP_PATH"${cfg.backupPath}"\ + --set RAILS_ENV "production" + ''; + }; + +in { + + options = { + services.gitlab = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable the gitlab service. + ''; + }; + + satelliteDir = mkOption { + type = types.str; + default = "/var/gitlab/git-satellites"; + description = "Directory to store checked out git trees requires for operation."; + }; + + stateDir = mkOption { + type = types.str; + default = "/var/gitlab/state"; + description = "The state directory, logs are stored here."; + }; + + backupPath = mkOption { + type = types.str; + default = cfg.stateDir + "/backup"; + description = "Path for backups."; + }; + + databaseHost = mkOption { + type = types.str; + default = "127.0.0.1"; + description = "Database hostname"; + }; + + databasePassword = mkOption { + type = types.str; + default = ""; + description = "Database user password"; + }; + + databaseName = mkOption { + type = types.str; + default = "gitlab"; + description = "Database name"; + }; + + databaseUsername = mkOption { + type = types.str; + default = "gitlab"; + description = "Database user"; + }; + + emailFrom = mkOption { + type = types.str; + default = "example@example.org"; + description = "The source address for emails sent by gitlab."; + }; + + host = mkOption { + type = types.str; + default = config.networking.hostName; + description = "The gitlab host name. Used e.g. for copy-paste URLs."; + }; + }; + }; + + config = mkIf cfg.enable { + + environment.systemPackages = [ gitlab-runner pkgs.gitlab-shell ]; + + assertions = [ + { assertion = cfg.databasePassword != ""; + message = "databasePassword must be set"; + } + ]; + + # Redis is required for the sidekiq queue runner. + services.redis.enable = mkDefault true; + # We use postgres as the main data store. + services.postgresql.enable = mkDefault true; + # Use postfix to send out mails. + services.postfix.enable = mkDefault true; + + users.extraUsers = [ + { name = "gitlab"; + group = "gitlab"; + home = "${cfg.stateDir}/home"; + shell = "${pkgs.bash}/bin/bash"; + uid = config.ids.uids.gitlab; + } ]; + + users.extraGroups = [ + { name = "gitlab"; + gid = config.ids.gids.gitlab; + } ]; + + systemd.services.gitlab-sidekiq = { + after = [ "network.target" "redis.service" ]; + wantedBy = [ "multi-user.target" ]; + environment.HOME = "${cfg.stateDir}/home"; + 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_DATABASE_HOST = "${cfg.databaseHost}"; + environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}"; + environment.RAILS_ENV = "production"; + path = with pkgs; [ + config.services.postgresql.package + gitAndTools.git + ruby + openssh + ]; + serviceConfig = { + Type = "simple"; + User = "gitlab"; + Group = "gitlab"; + TimeoutSec = "300"; + WorkingDirectory = "${pkgs.gitlab}/share/gitlab"; + ExecStart="${rubyLibs.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\""; + }; + }; + + systemd.services.gitlab = { + after = [ "network.target" "postgresql.service" "redis.service" ]; + wantedBy = [ "multi-user.target" ]; + environment.HOME = "${cfg.stateDir}/home"; + 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_HOST = "${cfg.host}"; + environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}"; + environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}"; + environment.RAILS_ENV = "production"; + path = with pkgs; [ + config.services.postgresql.package + gitAndTools.git + ruby + openssh + ]; + 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? + head -c 20 /dev/urandom > ${cfg.stateDir}/config/gitlab_shell_secret + mkdir -p ${cfg.stateDir}/home/.ssh + touch ${cfg.stateDir}/home/.ssh/authorized_keys + + 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}/ + + 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}'" + ${config.services.postgresql.package}/bin/createdb --owner gitlab gitlab || true + touch "${cfg.stateDir}/db-created" + + # force=yes disables the manual-interaction yes/no prompt + # which breaks without an stdin. + force=yes ${rubyLibs.bundler}/bin/bundle exec rake -f ${pkgs.gitlab}/share/gitlab/Rakefile gitlab:setup RAILS_ENV=production + fi + fi + + # 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 + + # 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}/ + ''; + + serviceConfig = { + PermissionsStartOnly = true; # preStart must be run as root + Type = "simple"; + User = "gitlab"; + Group = "gitlab"; + TimeoutSec = "300"; + WorkingDirectory = "${pkgs.gitlab}/share/gitlab"; + ExecStart="${rubyLibs.bundler}/bin/bundle exec \"unicorn -c ${cfg.stateDir}/config/unicorn.rb -E production\""; + }; + + }; + + }; + +} diff --git a/pkgs/applications/version-management/gitlab-shell/default.nix b/pkgs/applications/version-management/gitlab-shell/default.nix new file mode 100644 index 000000000000..3d4ae689f6b6 --- /dev/null +++ b/pkgs/applications/version-management/gitlab-shell/default.nix @@ -0,0 +1,59 @@ +{ stdenv, ruby, rubyLibs, fetchgit }: + +stdenv.mkDerivation rec { + version = "2.1.0"; + name = "gitlab-shell-${version}"; + + srcs = fetchgit { + url = "https://gitlab.com/gitlab-org/gitlab-shell.git"; + rev = "823aba63e444afa2f45477819770fec3cb5f0159"; + sha256 = "0ppf547xs9pvmk49v4h043d0j93k5n4q0yx3b9ssrc4qf2smflgq"; + }; + + buildInputs = [ + ruby rubyLibs.bundler + ]; + + installPhase = '' + mkdir -p $out/ + cp -R . $out/ + + # Nothing to install ATM for non-development but keeping the + # install command anyway in case that changes in the future: + export HOME=$(pwd) + bundle install -j4 --verbose --local --deployment --without development test + ''; + + # gitlab-shell will try to read its config relative to the source + # code by default which doesn't work in nixos because it's a + # read-only filesystem + postPatch = '' + substituteInPlace lib/gitlab_config.rb --replace\ + "File.join(ROOT_PATH, 'config.yml')"\ + "ENV['GITLAB_SHELL_CONFIG_PATH']" + substituteInPlace lib/gitlab_net.rb --replace\ + "File.read File.join(ROOT_PATH, '.gitlab_shell_secret')"\ + "File.read ENV['GITLAB_SHELL_SECRET_PATH']" + + # Note that we're running gitlab-shell from current-system/sw + # because otherwise updating gitlab-shell won't be reflected in + # the hardcoded path of the authorized-keys file: + substituteInPlace lib/gitlab_keys.rb --replace\ + "auth_line = \"command=\\\"#{ROOT_PATH}/bin/gitlab-shell"\ + "auth_line = \"command=\\\"GITLAB_SHELL_CONFIG_PATH=#{ENV['GITLAB_SHELL_CONFIG_PATH']} GITLAB_SHELL_SECRET_PATH=#{ENV['GITLAB_SHELL_SECRET_PATH']} /run/current-system/sw/bin/gitlab-shell" + + # We're setting GITLAB_SHELL_CONFIG_PATH in the ssh authorized key + # environment because we need it in gitlab_configrb + # . unsetenv_others will remove that so we're not doing it for + # now. + # + # TODO: Are there any security implications? The commit adding + # unsetenv_others didn't mention anything... + # + # Kernel::exec({'PATH' => ENV['PATH'], 'LD_LIBRARY_PATH' => ENV['LD_LIBRARY_PATH'], 'GL_ID' => ENV['GL_ID']}, *args, unsetenv_others: true) + substituteInPlace lib/gitlab_shell.rb --replace\ + " *args, unsetenv_others: true)"\ + " *args)" + ''; + +} diff --git a/pkgs/applications/version-management/gitlab/Gemfile.lock b/pkgs/applications/version-management/gitlab/Gemfile.lock new file mode 100644 index 000000000000..a7c6d626b129 --- /dev/null +++ b/pkgs/applications/version-management/gitlab/Gemfile.lock @@ -0,0 +1,711 @@ +GEM + remote: https://rubygems.org/ + specs: + RedCloth (4.2.9) + ace-rails-ap (2.0.1) + actionmailer (4.1.1) + actionpack (= 4.1.1) + actionview (= 4.1.1) + mail (~> 2.5.4) + actionpack (4.1.1) + actionview (= 4.1.1) + activesupport (= 4.1.1) + rack (~> 1.5.2) + rack-test (~> 0.6.2) + actionview (4.1.1) + activesupport (= 4.1.1) + builder (~> 3.1) + erubis (~> 2.7.0) + activemodel (4.1.1) + activesupport (= 4.1.1) + builder (~> 3.1) + activerecord (4.1.1) + activemodel (= 4.1.1) + activesupport (= 4.1.1) + arel (~> 5.0.0) + activesupport (4.1.1) + i18n (~> 0.6, >= 0.6.9) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.1) + tzinfo (~> 1.1) + acts-as-taggable-on (2.4.1) + rails (>= 3, < 5) + addressable (2.3.5) + annotate (2.6.0) + activerecord (>= 2.3.0) + rake (>= 0.8.7) + arel (5.0.1.20140414130214) + asciidoctor (0.1.4) + awesome_print (1.2.0) + axiom-types (0.0.5) + descendants_tracker (~> 0.0.1) + ice_nine (~> 0.9) + bcrypt (3.1.7) + 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.0.3.0) + sass (~> 3.2) + builder (3.2.2) + capybara (2.2.1) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + carrierwave (0.9.0) + activemodel (>= 3.2.0) + activesupport (>= 3.2.0) + json (>= 1.7) + celluloid (0.15.2) + timers (~> 1.1.0) + charlock_holmes (0.6.9.4) + cliver (0.3.2) + code_analyzer (0.4.3) + sexp_processor + coderay (1.1.0) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) + coffee-rails (4.0.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.0) + coffee-script (2.2.0) + coffee-script-source + execjs + coffee-script-source (1.6.3) + colored (1.2) + colorize (0.5.8) + connection_pool (1.2.0) + coveralls (0.7.0) + multi_json (~> 1.3) + rest-client + simplecov (>= 0.7) + term-ansicolor + thor + crack (0.4.1) + safe_yaml (~> 0.9.0) + creole (0.3.8) + d3_rails (3.1.10) + railties (>= 3.1.0) + daemons (1.1.9) + database_cleaner (1.3.0) + debug_inspector (0.0.2) + default_value_for (3.0.0) + activerecord (>= 3.2.0, < 5.0) + descendants_tracker (0.0.3) + devise (3.2.4) + bcrypt (~> 3.0) + orm_adapter (~> 0.1) + railties (>= 3.2.6, < 5) + thread_safe (~> 0.1) + warden (~> 1.2.3) + devise-async (0.9.0) + devise (~> 3.2) + diff-lcs (1.2.5) + diffy (3.0.3) + docile (1.1.5) + dotenv (0.9.0) + dropzonejs-rails (0.4.14) + rails (> 3.1) + email_spec (1.5.0) + launchy (~> 2.1) + mail (~> 2.2) + emoji (1.0.1) + json + enumerize (0.7.0) + activesupport (>= 3.2) + equalizer (0.0.8) + erubis (2.7.0) + escape_utils (0.2.4) + eventmachine (1.0.3) + excon (0.32.1) + execjs (2.0.2) + expression_parser (0.9.0) + factory_girl (4.3.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.3.0) + factory_girl (~> 4.3.0) + railties (>= 3.0.0) + faraday (0.8.9) + multipart-post (~> 1.2.0) + faraday_middleware (0.9.0) + faraday (>= 0.7.4, < 0.9) + ffaker (1.22.1) + ffi (1.9.3) + fog (1.21.0) + fog-brightbox + fog-core (~> 1.21, >= 1.21.1) + fog-json + nokogiri (~> 1.5, >= 1.5.11) + fog-brightbox (0.0.1) + fog-core + fog-json + fog-core (1.21.1) + builder + excon (~> 0.32) + formatador (~> 0.2.0) + mime-types + net-scp (~> 1.1) + net-ssh (>= 2.1.3) + fog-json (1.0.0) + multi_json (~> 1.0) + font-awesome-rails (4.2.0.0) + railties (>= 3.2, < 5.0) + foreman (0.63.0) + dotenv (>= 0.7) + thor (>= 0.13.6) + formatador (0.2.4) + gemnasium-gitlab-service (0.2.2) + rugged (~> 0.19) + gherkin-ruby (0.3.1) + racc + github-markup (1.1.0) + gitlab-flowdock-git-hook (0.4.2.2) + gitlab-grit (>= 2.4.1) + multi_json + gitlab-grack (2.0.0.pre) + rack (~> 1.5.1) + gitlab-grit (2.6.12) + charlock_holmes (~> 0.6) + diff-lcs (~> 1.1) + mime-types (~> 1.15) + posix-spawn (~> 0.3) + gitlab-linguist (3.0.0) + charlock_holmes (~> 0.6.6) + escape_utils (~> 0.2.4) + mime-types (~> 1.19) + gitlab_emoji (0.0.1.1) + emoji (~> 1.0.1) + gitlab_git (7.0.0.rc10) + activesupport (~> 4.0) + charlock_holmes (~> 0.6) + gitlab-linguist (~> 3.0) + rugged (~> 0.21.0) + gitlab_meta (7.0) + gitlab_omniauth-ldap (1.1.0) + net-ldap (~> 0.7.0) + omniauth (~> 1.0) + pyu-ruby-sasl (~> 0.0.3.1) + rubyntlm (~> 0.1.1) + gollum-lib (3.0.0) + github-markup (~> 1.1.0) + gitlab-grit (~> 2.6.5) + nokogiri (~> 1.6.1) + rouge (~> 1.3.3) + sanitize (~> 2.1.0) + stringex (~> 2.5.1) + gon (5.0.1) + actionpack (>= 2.3.0) + json + grape (0.6.1) + activesupport + builder + hashie (>= 1.2.0) + multi_json (>= 1.3.2) + multi_xml (>= 0.5.2) + rack (>= 1.3.0) + rack-accept + rack-mount + virtus (>= 1.0.0) + grape-entity (0.4.2) + activesupport + multi_json (>= 1.3.2) + growl (1.0.3) + guard (2.2.4) + formatador (>= 0.2.4) + listen (~> 2.1) + lumberjack (~> 1.0) + pry (>= 0.9.12) + thor (>= 0.18.1) + guard-rspec (4.2.0) + guard (>= 2.1.1) + rspec (>= 2.14, < 4.0) + guard-spinach (0.0.2) + guard (>= 1.1) + spinach + haml (4.0.5) + tilt + haml-rails (0.5.3) + actionpack (>= 4.0.1) + activesupport (>= 4.0.1) + haml (>= 3.1, < 5.0) + railties (>= 4.0.1) + hashie (2.1.2) + hike (1.2.3) + hipchat (0.14.0) + httparty + httparty + html-pipeline (1.11.0) + activesupport (>= 2) + nokogiri (~> 1.4) + html-pipeline-gitlab (0.1.5) + actionpack (~> 4) + gitlab_emoji (~> 0.0.1) + html-pipeline (~> 1.11.0) + sanitize (~> 2.1) + http_parser.rb (0.5.3) + httparty (0.13.0) + json (~> 1.8) + multi_xml (>= 0.5.2) + httpauth (0.2.1) + i18n (0.6.11) + ice_nine (0.10.0) + jasmine (2.0.2) + jasmine-core (~> 2.0.0) + phantomjs + rack (>= 1.2.1) + rake + jasmine-core (2.0.0) + jquery-atwho-rails (0.3.3) + jquery-rails (3.1.0) + railties (>= 3.0, < 5.0) + thor (>= 0.14, < 2.0) + jquery-scrollto-rails (1.4.3) + railties (> 3.1, < 5.0) + jquery-turbolinks (2.0.1) + railties (>= 3.1.0) + turbolinks + jquery-ui-rails (4.2.1) + railties (>= 3.2.16) + json (1.8.1) + jwt (0.1.13) + multi_json (>= 1.5) + kaminari (0.15.1) + actionpack (>= 3.0.0) + activesupport (>= 3.0.0) + kgio (2.8.1) + launchy (2.4.2) + addressable (~> 2.3) + letter_opener (1.1.2) + launchy (~> 2.2) + libv8 (3.16.14.3) + listen (2.3.1) + celluloid (>= 0.15.2) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + lumberjack (1.0.4) + mail (2.5.4) + mime-types (~> 1.16) + treetop (~> 1.4.8) + method_source (0.8.2) + mime-types (1.25.1) + mini_portile (0.6.0) + minitest (5.3.5) + mousetrap-rails (1.4.6) + multi_json (1.10.1) + multi_xml (0.5.5) + multipart-post (1.2.0) + net-ldap (0.7.0) + net-scp (1.1.2) + net-ssh (>= 2.6.5) + net-ssh (2.8.0) + newrelic_rpm (3.9.4.245) + nokogiri (1.6.2.1) + mini_portile (= 0.6.0) + nprogress-rails (0.1.2.3) + oauth (0.4.7) + oauth2 (0.8.1) + faraday (~> 0.8) + httpauth (~> 0.1) + jwt (~> 0.1.4) + multi_json (~> 1.0) + rack (~> 1.2) + omniauth (1.1.4) + hashie (>= 1.2, < 3) + rack + omniauth-github (1.1.1) + omniauth (~> 1.0) + omniauth-oauth2 (~> 1.1) + omniauth-google-oauth2 (0.2.5) + omniauth (> 1.0) + omniauth-oauth2 (~> 1.1) + omniauth-oauth (1.0.1) + oauth + omniauth (~> 1.0) + omniauth-oauth2 (1.1.1) + oauth2 (~> 0.8.0) + omniauth (~> 1.0) + omniauth-shibboleth (1.1.1) + omniauth (>= 1.0.0) + omniauth-twitter (1.0.1) + multi_json (~> 1.3) + omniauth-oauth (~> 1.0) + org-ruby (0.9.9) + rubypants (~> 0.2) + orm_adapter (0.5.0) + pg (0.15.1) + phantomjs (1.9.2.0) + poltergeist (1.5.1) + capybara (~> 2.1) + cliver (~> 0.3.1) + multi_json (~> 1.0) + websocket-driver (>= 0.2.0) + polyglot (0.3.4) + posix-spawn (0.3.9) + pry (0.9.12.4) + coderay (~> 1.0) + method_source (~> 0.8) + slop (~> 3.4) + pyu-ruby-sasl (0.0.3.3) + quiet_assets (1.0.2) + railties (>= 3.1, < 5.0) + racc (1.4.10) + rack (1.5.2) + rack-accept (0.4.5) + rack (>= 0.4) + rack-attack (2.3.0) + rack + rack-cors (0.2.9) + rack-mini-profiler (0.9.0) + rack (>= 1.1.3) + rack-mount (0.8.3) + rack (>= 1.0.0) + rack-protection (1.5.1) + rack + rack-test (0.6.2) + rack (>= 1.0) + rails (4.1.1) + actionmailer (= 4.1.1) + actionpack (= 4.1.1) + actionview (= 4.1.1) + activemodel (= 4.1.1) + activerecord (= 4.1.1) + activesupport (= 4.1.1) + bundler (>= 1.3.0, < 2.0) + railties (= 4.1.1) + sprockets-rails (~> 2.0) + rails_autolink (1.1.6) + rails (> 3.1) + rails_best_practices (1.14.4) + activesupport + awesome_print + code_analyzer (>= 0.4.3) + colored + erubis + i18n + require_all + ruby-progressbar + railties (4.1.1) + actionpack (= 4.1.1) + activesupport (= 4.1.1) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + raindrops (0.12.0) + rake (10.3.2) + raphael-rails (2.1.2) + rb-fsevent (0.9.3) + rb-inotify (0.9.2) + ffi (>= 0.5.0) + rdoc (3.12.2) + json (~> 1.4) + redcarpet (3.1.2) + redis (3.0.6) + redis-actionpack (4.0.0) + actionpack (~> 4) + redis-rack (~> 1.5.0) + redis-store (~> 1.1.0) + redis-activesupport (4.0.0) + activesupport (~> 4) + redis-store (~> 1.1.0) + redis-namespace (1.4.1) + redis (~> 3.0.4) + redis-rack (1.5.0) + rack (~> 1.5) + redis-store (~> 1.1.0) + redis-rails (4.0.0) + redis-actionpack (~> 4) + redis-activesupport (~> 4) + redis-store (~> 1.1.0) + redis-store (1.1.4) + redis (>= 2.2) + ref (1.0.5) + request_store (1.0.5) + require_all (1.3.2) + rest-client (1.6.7) + mime-types (>= 1.16) + rinku (1.7.3) + rouge (1.3.3) + rspec (2.14.1) + rspec-core (~> 2.14.0) + rspec-expectations (~> 2.14.0) + rspec-mocks (~> 2.14.0) + rspec-core (2.14.7) + rspec-expectations (2.14.4) + diff-lcs (>= 1.1.3, < 2.0) + rspec-mocks (2.14.4) + rspec-rails (2.14.0) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 2.14.0) + rspec-expectations (~> 2.14.0) + rspec-mocks (~> 2.14.0) + ruby-progressbar (1.2.0) + rubyntlm (0.1.1) + rubypants (0.2.0) + rugged (0.21.0) + safe_yaml (0.9.7) + sanitize (2.1.0) + nokogiri (>= 1.4.4) + sass (3.2.19) + sass-rails (4.0.3) + railties (>= 4.0.0, < 5.0) + sass (~> 3.2.0) + sprockets (~> 2.8, <= 2.11.0) + sprockets-rails (~> 2.0) + sdoc (0.3.20) + json (>= 1.1.3) + rdoc (~> 3.10) + seed-fu (2.3.1) + activerecord (>= 3.1, < 4.2) + activesupport (>= 3.1, < 4.2) + select2-rails (3.5.2) + thor (~> 0.14) + semantic-ui-sass (0.16.1.0) + sass (~> 3.2) + settingslogic (2.0.9) + sexp_processor (4.4.0) + shoulda-matchers (2.1.0) + activesupport (>= 3.0.0) + sidekiq (2.17.0) + celluloid (>= 0.15.2) + connection_pool (>= 1.0.0) + json + redis (>= 3.0.4) + redis-namespace (>= 1.3.1) + simple_oauth (0.1.9) + simplecov (0.9.0) + docile (~> 1.1.0) + multi_json + simplecov-html (~> 0.8.0) + simplecov-html (0.8.0) + sinatra (1.4.4) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + six (0.2.0) + slack-notifier (0.3.2) + slim (2.0.2) + temple (~> 0.6.6) + tilt (>= 1.3.3, < 2.1) + slop (3.4.7) + spinach (0.8.7) + colorize (= 0.5.8) + gherkin-ruby (>= 0.3.1) + spinach-rails (0.2.1) + capybara (>= 2.0.0) + railties (>= 3) + spinach (>= 0.4) + spring (1.1.3) + spring-commands-rspec (1.0.1) + spring (>= 0.9.1) + spring-commands-spinach (1.0.0) + spring (>= 0.9.1) + sprockets (2.11.0) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-rails (2.1.3) + actionpack (>= 3.0) + activesupport (>= 3.0) + sprockets (~> 2.8) + stamp (0.5.0) + state_machine (1.2.0) + stringex (2.5.1) + temple (0.6.7) + term-ansicolor (1.2.2) + tins (~> 0.8) + test_after_commit (0.2.2) + therubyracer (0.12.0) + libv8 (~> 3.16.14.0) + ref + thin (1.6.1) + daemons (>= 1.0.9) + eventmachine (>= 1.0.0) + rack (>= 1.0.0) + thor (0.19.1) + thread_safe (0.3.4) + tilt (1.4.1) + timers (1.1.0) + tinder (1.9.3) + eventmachine (~> 1.0) + faraday (~> 0.8) + faraday_middleware (~> 0.9) + hashie (>= 1.0, < 3) + json (~> 1.8.0) + mime-types (~> 1.19) + multi_json (~> 1.7) + twitter-stream (~> 0.1) + tins (0.13.1) + treetop (1.4.15) + polyglot + polyglot (>= 0.3.1) + turbolinks (2.0.0) + coffee-rails + twitter-stream (0.1.16) + eventmachine (>= 0.12.8) + http_parser.rb (~> 0.5.1) + simple_oauth (~> 0.1.4) + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (2.3.2) + execjs (>= 0.3.0) + json (>= 1.8.0) + underscore-rails (1.4.4) + unf (0.1.4) + unf_ext + unf_ext (0.0.6) + unicorn (4.6.3) + kgio (~> 2.6) + rack + raindrops (~> 0.7) + unicorn-worker-killer (0.4.2) + unicorn (~> 4) + version_sorter (1.1.0) + virtus (1.0.1) + axiom-types (~> 0.0.5) + coercible (~> 1.0) + descendants_tracker (~> 0.0.1) + equalizer (~> 0.0.7) + warden (1.2.3) + rack (>= 1.0) + webmock (1.16.0) + addressable (>= 2.2.7) + crack (>= 0.3.2) + websocket-driver (0.3.3) + wikicloth (0.8.1) + builder + expression_parser + rinku + xpath (2.0.0) + nokogiri (~> 1.3) + +PLATFORMS + ruby + +DEPENDENCIES + RedCloth + ace-rails-ap + acts-as-taggable-on + annotate (~> 2.6.0.beta2) + asciidoctor (= 0.1.4) + awesome_print + better_errors + binding_of_caller + bootstrap-sass (~> 3.0) + capybara (~> 2.2.1) + carrierwave + coffee-rails + colored + coveralls + creole (~> 0.3.6) + d3_rails (~> 3.1.4) + database_cleaner + default_value_for (~> 3.0.0) + devise (= 3.2.4) + devise-async (= 0.9.0) + diffy (~> 3.0.3) + dropzonejs-rails + email_spec + enumerize + factory_girl_rails + ffaker + fog (~> 1.14) + font-awesome-rails (~> 4.2) + foreman + gemnasium-gitlab-service (~> 0.2) + github-markup + gitlab-flowdock-git-hook (~> 0.4.2) + gitlab-grack (~> 2.0.0.pre) + gitlab-linguist (~> 3.0.0) + gitlab_emoji (~> 0.0.1.1) + gitlab_git (= 7.0.0.rc10) + gitlab_meta (= 7.0) + gitlab_omniauth-ldap (= 1.1.0) + gollum-lib (~> 3.0.0) + gon (~> 5.0.0) + grape (~> 0.6.1) + grape-entity (~> 0.4.2) + growl + guard-rspec + guard-spinach + haml-rails + hipchat (~> 0.14.0) + html-pipeline-gitlab (~> 0.1.0) + httparty + jasmine (= 2.0.2) + jquery-atwho-rails (~> 0.3.3) + jquery-rails + jquery-scrollto-rails + jquery-turbolinks + jquery-ui-rails + kaminari (~> 0.15.1) + launchy + letter_opener + minitest (~> 5.3.0) + mousetrap-rails + mysql2 + newrelic_rpm + nprogress-rails + omniauth (~> 1.1.3) + omniauth-github + omniauth-google-oauth2 + omniauth-shibboleth + omniauth-twitter + org-ruby (= 0.9.9) + pg + poltergeist (~> 1.5.1) + pry + quiet_assets (~> 1.0.1) + rack-attack + rack-cors + rack-mini-profiler + rails (~> 4.1.0) + rails_autolink (~> 1.1) + rails_best_practices + raphael-rails (~> 2.1.2) + rb-fsevent + rb-inotify + rdoc (~> 3.6) + redcarpet (~> 3.1.2) + redis-rails + request_store + rspec-rails + sanitize (~> 2.0) + sass-rails (~> 4.0.2) + sdoc + seed-fu + select2-rails + semantic-ui-sass (~> 0.16.1.0) + settingslogic + shoulda-matchers (~> 2.1.0) + sidekiq (= 2.17.0) + simplecov + sinatra + six + slack-notifier (~> 0.3.2) + slim + spinach-rails + spring (= 1.1.3) + spring-commands-rspec (= 1.0.1) + spring-commands-spinach (= 1.0.0) + stamp + state_machine + test_after_commit + therubyracer + thin + tinder (~> 1.9.2) + turbolinks + uglifier + underscore-rails (~> 1.4.4) + unf + unicorn (~> 4.6.3) + unicorn-worker-killer + version_sorter + virtus + webmock + wikicloth (= 0.8.1) diff --git a/pkgs/applications/version-management/gitlab/Gemfile.nix b/pkgs/applications/version-management/gitlab/Gemfile.nix new file mode 100644 index 000000000000..78b51178ac4b --- /dev/null +++ b/pkgs/applications/version-management/gitlab/Gemfile.nix @@ -0,0 +1,1526 @@ +[ +{ +name = "RedCloth"; +hash = "b4cf450a8868ca00a48d6ea43346d75dac183a8590774dd5590f4e967d87ea1a"; +url = "http://rubygems.org/downloads/RedCloth-4.2.9.gem"; +version = "4.2.9"; +} +{ +name = "ace-rails-ap"; +hash = "7bfbec4e8f7c7b6d2733fada398253f885ee48acd08201126a47a636b3085620"; +url = "http://rubygems.org/downloads/ace-rails-ap-2.0.1.gem"; +version = "2.0.1"; +} +{ +name = "actionmailer"; +hash = "ddf61f96ecf52b918522f063effb28985d0f76deb5c3ad85ab8cf5ec39adab92"; +url = "http://rubygems.org/downloads/actionmailer-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "actionpack"; +hash = "c11be56442eb570ba44d3b3ac74f6949f882c8dc76c56fceeb071daf64c5111d"; +url = "http://rubygems.org/downloads/actionpack-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "actionview"; +hash = "5892b097fc3556c4ac25307f3c406ba697b6520ca7c34b7d1ff17e0c93d79072"; +url = "http://rubygems.org/downloads/actionview-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "activemodel"; +hash = "c1d808d85b5e7f90593cb66ac7694f9288c819cdd1cb029790617f60cfed3232"; +url = "http://rubygems.org/downloads/activemodel-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "activerecord"; +hash = "df9f2227e00779826ea8abe13ed1c6aa9ba5422b35e37c1b82f62480d2ea13a0"; +url = "http://rubygems.org/downloads/activerecord-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "activesupport"; +hash = "7342801d69c8ca68c9005cafbc4a8f67069d3b51c0a4f5e2bbd061dcb26bba85"; +url = "http://rubygems.org/downloads/activesupport-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "acts-as-taggable-on"; +hash = "4b75dd427cb721f38fe354e8a37d8c3d217779c9db204398890984694def753d"; +url = "http://rubygems.org/downloads/acts-as-taggable-on-2.4.1.gem"; +version = "2.4.1"; +} +{ +name = "addressable"; +hash = "e74d0e825fe79b12943c7e3cbd3a5c92f7e3ebb94485b2493d320d6876321b86"; +url = "http://rubygems.org/downloads/addressable-2.3.5.gem"; +version = "2.3.5"; +} +{ +name = "annotate"; +hash = "d92ab99c6d10d98fec361bb5501ee91f8f30d1a7b2a6267334d74a1c6b363656"; +url = "http://rubygems.org/downloads/annotate-2.6.0.gem"; +version = "2.6.0"; +} +{ +name = "arel"; +hash = "c941f07bad89af26e8837c73d8a399b7777c721609f759eda015ed0081601636"; +url = "http://rubygems.org/downloads/arel-5.0.1.20140414130214.gem"; +version = "5.0.1.20140414130214"; +} +{ +name = "asciidoctor"; +hash = "2a2d6f9aed31200c9c74e5b81dba1673eda2f7936599df016cbe608dd8e1cf92"; +url = "http://rubygems.org/downloads/asciidoctor-0.1.4.gem"; +version = "0.1.4"; +} +{ +name = "awesome_print"; +hash = "f9fb1d1bafddc4739266c68f3a043e409716a620aea937d54d1ae07c278305cd"; +url = "http://rubygems.org/downloads/awesome_print-1.2.0.gem"; +version = "1.2.0"; +} +{ +name = "axiom-types"; +hash = "f67b87e9d7276f78cbee8f09f9bd474d63d7b357d271c63bfac5092b4670d54c"; +url = "http://rubygems.org/downloads/axiom-types-0.0.5.gem"; +version = "0.0.5"; +} +{ +name = "bcrypt"; +hash = "1c30953152c7151eac21aa59eed7ea933a7bc5d5838edea1d30d79b005955702"; +url = "http://rubygems.org/downloads/bcrypt-3.1.7.gem"; +version = "3.1.7"; +} +{ +name = "better_errors"; +hash = "eec93a02c996a8105cd9409cff2a2156a16ff1609b93b9b0d38c623cdb42186c"; +url = "http://rubygems.org/downloads/better_errors-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "binding_of_caller"; +hash = "d327682ce1d8e8cc46e282a46052946af0de16bef734014c63df0aac66334f96"; +url = "http://rubygems.org/downloads/binding_of_caller-0.7.2.gem"; +version = "0.7.2"; +} +{ +name = "bootstrap-sass"; +hash = "3f9269bae459b9f48bcb46524497fe7c422919708d12d9d9b1096b45339654c7"; +url = "http://rubygems.org/downloads/bootstrap-sass-3.0.3.0.gem"; +version = "3.0.3.0"; +} +{ +name = "builder"; +hash = "62fb9ad70ea42219a0c8d209a30281803712c717df7cb8f5ce5f63b4d489d191"; +url = "http://rubygems.org/downloads/builder-3.2.2.gem"; +version = "3.2.2"; +} +{ +name = "capybara"; +hash = "0081ff6eaa33f4b5b0427db7ef0ca0af015a9bf6606126f41016db6feb58cdeb"; +url = "http://rubygems.org/downloads/capybara-2.2.1.gem"; +version = "2.2.1"; +} +{ +name = "carrierwave"; +hash = "859069a445ffe03551cce9e239da424dabcc3b9a855e5f615ec62f6655d82aac"; +url = "http://rubygems.org/downloads/carrierwave-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "celluloid"; +hash = "2bb549276898d262355818b54eee45161d565af08728a5fe83e51277ea49ea52"; +url = "http://rubygems.org/downloads/celluloid-0.15.2.gem"; +version = "0.15.2"; +} +{ +name = "charlock_holmes"; +hash = "e52db7af0f7a652f55244455f84b4f1c09144f0d5e416f677a912f9147d6dfef"; +url = "http://rubygems.org/downloads/charlock_holmes-0.6.9.4.gem"; +version = "0.6.9.4"; +} +{ +name = "cliver"; +hash = "8775445218c612bb57f50c392c4906a1ab5cca067eab093bde3cc77d6426ce24"; +url = "http://rubygems.org/downloads/cliver-0.3.2.gem"; +version = "0.3.2"; +} +{ +name = "code_analyzer"; +hash = "27b610b987b3421d17a615cbab0c712f90bca45e82391ab9082670af97360bed"; +url = "http://rubygems.org/downloads/code_analyzer-0.4.3.gem"; +version = "0.4.3"; +} +{ +name = "coderay"; +hash = "5a943c59e36f7ef9dd2677855735656413af02e3f302431e9c548aabe89f3c15"; +url = "http://rubygems.org/downloads/coderay-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "coercible"; +hash = "5081ad24352cc8435ce5472bc2faa30260c7ea7f2102cc6a9f167c4d9bffaadc"; +url = "http://rubygems.org/downloads/coercible-1.0.0.gem"; +version = "1.0.0"; +} +{ +name = "coffee-rails"; +hash = "2f6e36f2c7a2b5ea4ba2aae5d8f70b443e47f010e1f645aec28368d783e1d88a"; +url = "http://rubygems.org/downloads/coffee-rails-4.0.1.gem"; +version = "4.0.1"; +} +{ +name = "coffee-script"; +hash = "acdd9f907950cfcf2342bc621ac9d11c9b0f34e2be8ab02de7845c673fb96c8c"; +url = "http://rubygems.org/downloads/coffee-script-2.2.0.gem"; +version = "2.2.0"; +} +{ +name = "coffee-script-source"; +hash = "64a5e37557b367c3a087643ed033b1dce485d6c21f96262aecc806d93280635c"; +url = "http://rubygems.org/downloads/coffee-script-source-1.6.3.gem"; +version = "1.6.3"; +} +{ +name = "colored"; +hash = "9d82b47ac589ce7f6cab64b1f194a2009e9fd00c326a5357321f44afab2c1d2c"; +url = "http://rubygems.org/downloads/colored-1.2.gem"; +version = "1.2"; +} +{ +name = "colorize"; +hash = "0f3d2c56f6a9da8dd6e8bb7c4448dab91a682615ef49feff415a8a6999dedfe5"; +url = "http://rubygems.org/downloads/colorize-0.5.8.gem"; +version = "0.5.8"; +} +{ +name = "connection_pool"; +hash = "41c0f1ff0c5a697869344ff50ae0d952fe99b52b26c21744b06fac34323adcb9"; +url = "http://rubygems.org/downloads/connection_pool-1.2.0.gem"; +version = "1.2.0"; +} +{ +name = "coveralls"; +hash = "449284ddd071e2297d06d0a9d18fe4c2b4027848263b1087d4180fb44e03e36b"; +url = "http://rubygems.org/downloads/coveralls-0.7.0.gem"; +version = "0.7.0"; +} +{ +name = "crack"; +hash = "4f9690bc66278494e0c525989b8ebfa89ce44087cd1733857d6ca9162dd16271"; +url = "http://rubygems.org/downloads/crack-0.4.1.gem"; +version = "0.4.1"; +} +{ +name = "creole"; +hash = "88ceda907e86402e629557002dfdc3a64c96ece2f85af8d787b96422639998f3"; +url = "http://rubygems.org/downloads/creole-0.3.8.gem"; +version = "0.3.8"; +} +{ +name = "d3_rails"; +hash = "28c6b97d4167481b78525cb2e2aa6b066fff6a086bb68a25762dec502cdf24d9"; +url = "http://rubygems.org/downloads/d3_rails-3.1.10.gem"; +version = "3.1.10"; +} +{ +name = "daemons"; +hash = "fee738586059ac5051ed89b40b63d02bdc9a19254f9b6e58848dea1c2f3135c8"; +url = "http://rubygems.org/downloads/daemons-1.1.9.gem"; +version = "1.1.9"; +} +{ +name = "database_cleaner"; +hash = "f675eb78d4fed65ae1e8503ccef4dfd25f4a3c3702bfb792789720a39a2f82a7"; +url = "http://rubygems.org/downloads/database_cleaner-1.3.0.gem"; +version = "1.3.0"; +} +{ +name = "debug_inspector"; +hash = "1594188ffd35b9973fa1e048497e4aa63abad0c3cbba0670e17935005e302781"; +url = "http://rubygems.org/downloads/debug_inspector-0.0.2.gem"; +version = "0.0.2"; +} +{ +name = "default_value_for"; +hash = "1fbd89cb5e7dab1820f7da6bbf5972c36e41acaa25101f129a7adffe9b987021"; +url = "http://rubygems.org/downloads/default_value_for-3.0.0.gem"; +version = "3.0.0"; +} +{ +name = "descendants_tracker"; +hash = "01d7079bc81d4743e138bf77a7cc1ece123834fa6883f4241646163401922920"; +url = "http://rubygems.org/downloads/descendants_tracker-0.0.3.gem"; +version = "0.0.3"; +} +{ +name = "devise"; +hash = "a37345a41049b5c4e02da561bcf922920b406cdd41970d1eb0023315050244fd"; +url = "http://rubygems.org/downloads/devise-3.2.4.gem"; +version = "3.2.4"; +} +{ +name = "devise-async"; +hash = "b51aec324bfa56f5e51b00e5429546e9eeab4be99ac0971625afdeffde799486"; +url = "http://rubygems.org/downloads/devise-async-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "diff-lcs"; +hash = "a1d3dde665292317a883d319066792e3f0e6a24cade4bc4cc47605d27664c9ed"; +url = "http://rubygems.org/downloads/diff-lcs-1.2.5.gem"; +version = "1.2.5"; +} +{ +name = "diffy"; +hash = "15a1d91b0ea81cada6ef5977543e7c255b4f8c5c3d361e557c8aee52cdf58d62"; +url = "http://rubygems.org/downloads/diffy-3.0.3.gem"; +version = "3.0.3"; +} +{ +name = "docile"; +hash = "5d3ee40b3a6567fe460601f3f4a3e199a98de37434ebfa242d751d0c79181255"; +url = "http://rubygems.org/downloads/docile-1.1.5.gem"; +version = "1.1.5"; +} +{ +name = "dotenv"; +hash = "838e235fa00d343c3138dbc05aa2cf1ec626ff9f065d521917a79a86b4a980be"; +url = "http://rubygems.org/downloads/dotenv-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "dropzonejs-rails"; +hash = "de86f5f58ca2e6f7212709db879f72d3eec16477a92296f03effabdd928c122b"; +url = "http://rubygems.org/downloads/dropzonejs-rails-0.4.14.gem"; +version = "0.4.14"; +} +{ +name = "email_spec"; +hash = "2607e556f41ab7fb90dabd3eda3d21acec5c2afd3ee607ab713664473dda503f"; +url = "http://rubygems.org/downloads/email_spec-1.5.0.gem"; +version = "1.5.0"; +} +{ +name = "emoji"; +hash = "2a74a4c6ff196cdc81e63198d30d8660b39b1147a59bd5f3639b39edf8fccf05"; +url = "http://rubygems.org/downloads/emoji-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "enumerize"; +hash = "4608034132557260e16a936c0eef54bf26c21eda261da25f89e49edd475de665"; +url = "http://rubygems.org/downloads/enumerize-0.7.0.gem"; +version = "0.7.0"; +} +{ +name = "equalizer"; +hash = "d66d02ece6935c217e3a81b2e33487825633fd203144e495b6e29f07278909da"; +url = "http://rubygems.org/downloads/equalizer-0.0.8.gem"; +version = "0.0.8"; +} +{ +name = "erubis"; +hash = "63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba"; +url = "http://rubygems.org/downloads/erubis-2.7.0.gem"; +version = "2.7.0"; +} +{ +name = "escape_utils"; +hash = "8f14b54e78845b9673d4ade8ec7f748652e18e19cd9800605f810ba0d4bbe555"; +url = "http://rubygems.org/downloads/escape_utils-0.2.4.gem"; +version = "0.2.4"; +} +{ +name = "eventmachine"; +hash = "34424c87fc517f70ba137fe2281d16b53ce9c13f5cbfc2dda3ada56e96a65827"; +url = "http://rubygems.org/downloads/eventmachine-1.0.3.gem"; +version = "1.0.3"; +} +{ +name = "excon"; +hash = "aa1018571cb72248f82a9b88ab631b53179d0de0f8169957eebe512404805f79"; +url = "http://rubygems.org/downloads/excon-0.32.1.gem"; +version = "0.32.1"; +} +{ +name = "execjs"; +hash = "5a2e097ea0ae440cbbe6aebf54d83cf8596324fa85b7a725dfdb1e8afd5cf398"; +url = "http://rubygems.org/downloads/execjs-2.0.2.gem"; +version = "2.0.2"; +} +{ +name = "expression_parser"; +hash = "2b56db3cffc48c3337f4f29f5bc2374c86e7ba29acb40269c74bb55af9f868a4"; +url = "http://rubygems.org/downloads/expression_parser-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "factory_girl"; +hash = "bfa55ba5d3218c8e86adf251be79a3f936adadcae563f0d7462cfcb38802e28f"; +url = "http://rubygems.org/downloads/factory_girl-4.3.0.gem"; +version = "4.3.0"; +} +{ +name = "factory_girl_rails"; +hash = "1fe68aa430afa25807a135ac348b5157ec5b70608fb7741e598d46570df540ca"; +url = "http://rubygems.org/downloads/factory_girl_rails-4.3.0.gem"; +version = "4.3.0"; +} +{ +name = "faraday"; +hash = "289c3b5b57821b52988bdb5178d3e1149741f2bae5fbee2a80bc83feb44ba79d"; +url = "http://rubygems.org/downloads/faraday-0.8.9.gem"; +version = "0.8.9"; +} +{ +name = "faraday_middleware"; +hash = "02b37848159983ed1e4374f46f02325bf0364e8eb1e0a38839d2b4deb4889bcf"; +url = "http://rubygems.org/downloads/faraday_middleware-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "ffaker"; +hash = "18e03e1390c5bf0fc7ebf9a457fcce365b5e51e937b79c9e0c03e1191cc4f79f"; +url = "http://rubygems.org/downloads/ffaker-1.22.1.gem"; +version = "1.22.1"; +} +{ +name = "ffi"; +hash = "57977d095c1c324ac1cb134863180b34d5743fed2b6d7528adc5ec71a581e320"; +url = "http://rubygems.org/downloads/ffi-1.9.3.gem"; +version = "1.9.3"; +} +{ +name = "fog"; +hash = "ee28b0bae7004a98e139f65d8fe606d666534f4b5f96cef247bdd0374ec10b92"; +url = "http://rubygems.org/downloads/fog-1.21.0.gem"; +version = "1.21.0"; +} +{ +name = "fog-brightbox"; +hash = "7362f7497c45e7aa9621a23d4486211c90126afd86d0a5603270d88894bb2b48"; +url = "http://rubygems.org/downloads/fog-brightbox-0.0.1.gem"; +version = "0.0.1"; +} +{ +name = "fog-core"; +hash = "64e023ca8de23a0317ff3608c65068bbf722691c07a26c00752b9e51168d9df1"; +url = "http://rubygems.org/downloads/fog-core-1.21.1.gem"; +version = "1.21.1"; +} +{ +name = "fog-json"; +hash = "dcd321b42f551a9ed3a2a5d43bdfe703b7588dcac5a9e504577501ba50d52794"; +url = "http://rubygems.org/downloads/fog-json-1.0.0.gem"; +version = "1.0.0"; +} +{ +name = "font-awesome-rails"; +hash = "00ca8028187d17176a397588003c6db779ed14197dbbe28d369561ae2919dde4"; +url = "http://rubygems.org/downloads/font-awesome-rails-4.2.0.0.gem"; +version = "4.2.0.0"; +} +{ +name = "foreman"; +hash = "937e1b895042139d578936b1c099bc1989dcb7188c0f4798e79154997a941e7b"; +url = "http://rubygems.org/downloads/foreman-0.63.0.gem"; +version = "0.63.0"; +} +{ +name = "formatador"; +hash = "2238f3794fc3b5d69578fdd9bad7ea82116540a3587a67a966a39a686098f55d"; +url = "http://rubygems.org/downloads/formatador-0.2.4.gem"; +version = "0.2.4"; +} +{ +name = "gemnasium-gitlab-service"; +hash = "82b9b6ef02f625a30198cefe5fd46b8c4551ec749a320d3b56fdcd1ebef07228"; +url = "http://rubygems.org/downloads/gemnasium-gitlab-service-0.2.2.gem"; +version = "0.2.2"; +} +{ +name = "gherkin-ruby"; +hash = "9856207d67c184a07e7e35e91fd4322f89ad15704ba1f3764307f8798864f482"; +url = "http://rubygems.org/downloads/gherkin-ruby-0.3.1.gem"; +version = "0.3.1"; +} +{ +name = "github-markup"; +hash = "ef345d335058b050ecbe0f2e59450e1f6648574fa67f31b8537cdead9ea4fa1b"; +url = "http://rubygems.org/downloads/github-markup-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "gitlab-flowdock-git-hook"; +hash = "9bdb3455e46de3a6642d72a23f8f62b57669d1d0f2ea98561c653736ffe4d064"; +url = "http://rubygems.org/downloads/gitlab-flowdock-git-hook-0.4.2.2.gem"; +version = "0.4.2.2"; +} +{ +name = "gitlab-grack"; +hash = "197qdlymn6cf0qk3698kn0miizv7x9hr1429g9l900rnc85a5rdb"; +url = "https://rubygems.org/downloads/gitlab-grack-2.0.0.pre.gem"; +version = "2.0.0.pre"; +} +{ +name = "gitlab-grit"; +hash = "88996ec1e14017bfd4c70baae6e72110317704ae689f3fdb26e3bd371887cf03"; +url = "http://rubygems.org/downloads/gitlab-grit-2.6.12.gem"; +version = "2.6.12"; +} +{ +name = "gitlab-linguist"; +hash = "6652604cdf0168832ba5fe6662251f792730fbcb9253869625658cb1e8d9563c"; +url = "http://rubygems.org/downloads/gitlab-linguist-3.0.0.gem"; +version = "3.0.0"; +} +{ +name = "gitlab_emoji"; +hash = "760fc5df13080ef39bb8f06878b5b49b7206d4259471d6569fbb0e56f0821d33"; +url = "http://rubygems.org/downloads/gitlab_emoji-0.0.1.1.gem"; +version = "0.0.1.1"; +} +{ +name = "gitlab_git"; +hash = "0kjljz76wh4344z05mv3wiad7qdf6nwaa0yl1jls1j0hk9i4bb4k"; +url = "https://rubygems.org/downloads/gitlab_git-7.0.0.rc10.gem"; +version = "7.0.0.rc10"; +} +{ +name = "gitlab_meta"; +hash = "e96e1ced109b39bfcbefb30623e31c8eab4dc7d385a01bf7ba9ed1f5ce866a93"; +url = "http://rubygems.org/downloads/gitlab_meta-7.0.gem"; +version = "7.0"; +} +{ +name = "gitlab_omniauth-ldap"; +hash = "07df91c1993de0e5fa2fda845e2109e7b0bce228960bf41f770350873e82fa2e"; +url = "http://rubygems.org/downloads/gitlab_omniauth-ldap-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "gollum-lib"; +hash = "7a0896cae6d443e42b19e1353f1f900684b63109844cfdb52c48d40f2824e7a1"; +url = "http://rubygems.org/downloads/gollum-lib-3.0.0.gem"; +version = "3.0.0"; +} +{ +name = "gon"; +hash = "f593d15ba8616a0c9482b53113e03bc8a69cd0392e21f0189b2a96338837eaa5"; +url = "http://rubygems.org/downloads/gon-5.0.1.gem"; +version = "5.0.1"; +} +{ +name = "grape"; +hash = "e83ff1ae19bb2a402a75bdf81372ae31d25399ec6079f4e31d6be1572f9854ea"; +url = "http://rubygems.org/downloads/grape-0.6.1.gem"; +version = "0.6.1"; +} +{ +name = "grape-entity"; +hash = "93bc04e43bac2ab8959d66beffcac3d60e88681cb7c09de923c80a0e8fbc7b97"; +url = "http://rubygems.org/downloads/grape-entity-0.4.2.gem"; +version = "0.4.2"; +} +{ +name = "growl"; +hash = "c926f6fa77800a1cfab1c0a9e4c3608c93b5619145062cf6ba545949553d1e68"; +url = "http://rubygems.org/downloads/growl-1.0.3.gem"; +version = "1.0.3"; +} +{ +name = "guard"; +hash = "182ecf687c58d19de444a711892a44b6ef607589073f16c413c8ffcb663e827c"; +url = "http://rubygems.org/downloads/guard-2.2.4.gem"; +version = "2.2.4"; +} +{ +name = "guard-rspec"; +hash = "1631dd0b0172e528d23d92de3ad8c2903fcae195707bb18bdac023c4592a8158"; +url = "http://rubygems.org/downloads/guard-rspec-4.2.0.gem"; +version = "4.2.0"; +} +{ +name = "guard-spinach"; +hash = "2d76e05c747fc3ef163449c3f5d0b850af92bbd66f7133f3b79bfbe8a23750bb"; +url = "http://rubygems.org/downloads/guard-spinach-0.0.2.gem"; +version = "0.0.2"; +} +{ +name = "haml"; +hash = "05b1cde6e0d770e800cb74f6bf1212446bc4573bbbfecc4002e1085c2658bff6"; +url = "http://rubygems.org/downloads/haml-4.0.5.gem"; +version = "4.0.5"; +} +{ +name = "haml-rails"; +hash = "4598b9c3204a04ce27dfe5ce88f278af0a1069c7a5f2708a80c49df5026ce439"; +url = "http://rubygems.org/downloads/haml-rails-0.5.3.gem"; +version = "0.5.3"; +} +{ +name = "hashie"; +hash = "a9e1e4928bf4f5a5683ea9c7ef29e50fb93f72542f9a9550e205fe33a6568923"; +url = "http://rubygems.org/downloads/hashie-2.1.2.gem"; +version = "2.1.2"; +} +{ +name = "hike"; +hash = "154e2f2593845e5bcd8ed2ba3092600c55c6ad8c630722857de3fdaf334ccc44"; +url = "http://rubygems.org/downloads/hike-1.2.3.gem"; +version = "1.2.3"; +} +{ +name = "hipchat"; +hash = "1678c4ee7de2beacc2986792c29dbe5008b09247f1088046f02a062155896bf8"; +url = "http://rubygems.org/downloads/hipchat-0.14.0.gem"; +version = "0.14.0"; +} +{ +name = "html-pipeline"; +hash = "3461d1f709ef4812f11cc9789bdebb801813ba726e5544df3aad6c62336d93f9"; +url = "http://rubygems.org/downloads/html-pipeline-1.11.0.gem"; +version = "1.11.0"; +} +{ +name = "html-pipeline-gitlab"; +hash = "cf36fa0aded375a210d38586e023642a88585360b9fc203621a210ac8f4430be"; +url = "http://rubygems.org/downloads/html-pipeline-gitlab-0.1.5.gem"; +version = "0.1.5"; +} +{ +name = "http_parser.rb"; +hash = "d64f525eb1c580598d5bdef4fad98e948b6e016fa7803f45e13ac8714a2b8e3b"; +url = "http://rubygems.org/downloads/http_parser.rb-0.5.3.gem"; +version = "0.5.3"; +} +{ +name = "httparty"; +hash = "5c8ad1664ebd51c7bded6a96138d804549c030b413ad685b8b3940dea137aae1"; +url = "http://rubygems.org/downloads/httparty-0.13.0.gem"; +version = "0.13.0"; +} +{ +name = "httpauth"; +hash = "0d4991e48dfe46aae27ec709b896e54b7a1c402d84a4dbc93a6fe86d8353b4f9"; +url = "http://rubygems.org/downloads/httpauth-0.2.1.gem"; +version = "0.2.1"; +} +{ +name = "i18n"; +hash = "b37dda25b30484f2674a851e24ae098a38564a61c976fa91a34bf8fceaa3923b"; +url = "http://rubygems.org/downloads/i18n-0.6.11.gem"; +version = "0.6.11"; +} +{ +name = "ice_nine"; +hash = "108f7538b32819623db949583895a962f5934dcfd183e7fff8b7e6d70db04c42"; +url = "http://rubygems.org/downloads/ice_nine-0.10.0.gem"; +version = "0.10.0"; +} +{ +name = "jasmine"; +hash = "39426ce310c74f2efbe8dfae6efb3770f58687a11bb84a4115e15a528b2a1fec"; +url = "http://rubygems.org/downloads/jasmine-2.0.2.gem"; +version = "2.0.2"; +} +{ +name = "jasmine-core"; +hash = "f23bfecc48cca26fe2f81bb7b1782f1a853168f7a0c14c187a8aabec9b4d39bb"; +url = "http://rubygems.org/downloads/jasmine-core-2.0.0.gem"; +version = "2.0.0"; +} +{ +name = "jquery-atwho-rails"; +hash = "7abb6386fb377165e7ed8cb1665536f4b340c3c208400addc7441be2f10c1cb9"; +url = "http://rubygems.org/downloads/jquery-atwho-rails-0.3.3.gem"; +version = "0.3.3"; +} +{ +name = "jquery-rails"; +hash = "9d192f83aaa54196b380753cb20b42ca1ad210715063ef0fb15fac63ec430a8c"; +url = "http://rubygems.org/downloads/jquery-rails-3.1.0.gem"; +version = "3.1.0"; +} +{ +name = "jquery-scrollto-rails"; +hash = "77dbb8add00d4f1baec5f34859b992649a86a9ca054b1c2a7d3e03c3fb072c8a"; +url = "http://rubygems.org/downloads/jquery-scrollto-rails-1.4.3.gem"; +version = "1.4.3"; +} +{ +name = "jquery-turbolinks"; +hash = "6d9a82a44ddf652f74b6181e5892860cdbda3f000eb1497fa91e3dc098d9ca34"; +url = "http://rubygems.org/downloads/jquery-turbolinks-2.0.1.gem"; +version = "2.0.1"; +} +{ +name = "jquery-ui-rails"; +hash = "5b349e7066150b16d7a784183f040c083d51af3357937b8564aa0cc8b1cd59bd"; +url = "http://rubygems.org/downloads/jquery-ui-rails-4.2.1.gem"; +version = "4.2.1"; +} +{ +name = "json"; +hash = "961bfbbfa9fda1e857e9c791e964e6664e0d43bf687b19669dfbc7cdbc5e0200"; +url = "http://rubygems.org/downloads/json-1.8.1.gem"; +version = "1.8.1"; +} +{ +name = "jwt"; +hash = "5653fb76aa0b4b280624b314cd6c00a64de7cb2d61c2ab27587b434b8ad7880d"; +url = "http://rubygems.org/downloads/jwt-0.1.13.gem"; +version = "0.1.13"; +} +{ +name = "kaminari"; +hash = "6d8c87cdcd1bff99cc97436160ec31dae3228403a04169c33421c3522e7cc7d4"; +url = "http://rubygems.org/downloads/kaminari-0.15.1.gem"; +version = "0.15.1"; +} +{ +name = "kgio"; +hash = "92e59a3b97d044177b354f1434f6ebddfe50309d18d84754ab08d632a61dfc6e"; +url = "http://rubygems.org/downloads/kgio-2.8.1.gem"; +version = "2.8.1"; +} +{ +name = "launchy"; +hash = "3b22fd75759a8af480e1a7545c17e10eada3146605e1789cc162da8b33ad3644"; +url = "http://rubygems.org/downloads/launchy-2.4.2.gem"; +version = "2.4.2"; +} +{ +name = "letter_opener"; +hash = "b43060c7b223b00caa94dafe7016b424d809c83378326fbf24d041830cabebcf"; +url = "http://rubygems.org/downloads/letter_opener-1.1.2.gem"; +version = "1.1.2"; +} +{ +name = "libv8"; +hash = "64490f61e9aa928e2905e90fafde5403496925d7a9539026628b01854fd69862"; +url = "http://rubygems.org/downloads/libv8-3.16.14.3-x86_64-linux.gem"; +version = "3.16.14.3"; +} +{ +name = "listen"; +hash = "5549b607337a95bb3248a97660ccaa0c3eeec70e01e61b8a08d4a6c36dd93720"; +url = "http://rubygems.org/downloads/listen-2.3.1.gem"; +version = "2.3.1"; +} +{ +name = "lumberjack"; +hash = "2d85f466e25623f5c1d8476523f5e4b7903fa622007ac109fd7b560b45a846d6"; +url = "http://rubygems.org/downloads/lumberjack-1.0.4.gem"; +version = "1.0.4"; +} +{ +name = "mail"; +hash = "446585c38b062121252688dcc9cc70af1f470822e30db021bb97d185969e257c"; +url = "http://rubygems.org/downloads/mail-2.5.4.gem"; +version = "2.5.4"; +} +{ +name = "method_source"; +hash = "c2e9d0f4ebefd6b37efe38fe2964337b1d315fe198cad850681fd2da0027b1bc"; +url = "http://rubygems.org/downloads/method_source-0.8.2.gem"; +version = "0.8.2"; +} +{ +name = "mime-types"; +hash = "88ef3c596481678710ffd4018fa40f1999b02d97babea39682ba7d5badd21f56"; +url = "http://rubygems.org/downloads/mime-types-1.25.1.gem"; +version = "1.25.1"; +} +{ +name = "mini_portile"; +hash = "762b3e241362de24b2eb2bb1b98638399b931e9e51bece5f8e2df7611eb16c26"; +url = "http://rubygems.org/downloads/mini_portile-0.6.0.gem"; +version = "0.6.0"; +} +{ +name = "minitest"; +hash = "b99fb077a6ace47d496f981041395ec565b9a1a59c45a73a2edd880bb27493a2"; +url = "http://rubygems.org/downloads/minitest-5.3.5.gem"; +version = "5.3.5"; +} +{ +name = "mousetrap-rails"; +hash = "555caf5075543bb0f5bf642ea11ce02d08001ddb48041400de64667e4b1ec102"; +url = "http://rubygems.org/downloads/mousetrap-rails-1.4.6.gem"; +version = "1.4.6"; +} +{ +name = "multi_json"; +hash = "2c98979877e87df0b338ebf5c86091b390f53d62c11a8232bd51ca007e0b82d2"; +url = "http://rubygems.org/downloads/multi_json-1.10.1.gem"; +version = "1.10.1"; +} +{ +name = "multi_xml"; +hash = "08936dc294586ee1d178217cce577febe26315d7880e01e4f8e97cf2753b1945"; +url = "http://rubygems.org/downloads/multi_xml-0.5.5.gem"; +version = "0.5.5"; +} +{ +name = "multipart-post"; +hash = "ccf26a61706f128a2a3f3745aba0f79fde7b6fee068e03490eb189c2aaa5e78a"; +url = "http://rubygems.org/downloads/multipart-post-1.2.0.gem"; +version = "1.2.0"; +} +{ +name = "net-ldap"; +hash = "d39d341c992abb7273d8b83cbe32a38e69fdeb4eab684dbd2db1232e4065a4b4"; +url = "http://rubygems.org/downloads/net-ldap-0.7.0.gem"; +version = "0.7.0"; +} +{ +name = "net-scp"; +hash = "f3d8848f63f9b7670e57af2e2c308e9bd6fddb7c5440a36e892478a1e62b5977"; +url = "http://rubygems.org/downloads/net-scp-1.1.2.gem"; +version = "1.1.2"; +} +{ +name = "net-ssh"; +hash = "42f5c53fc4b8fb8c75de7c6b996613d7915e6f7387d4b5f7394fa51402500951"; +url = "http://rubygems.org/downloads/net-ssh-2.8.0.gem"; +version = "2.8.0"; +} +{ +name = "newrelic_rpm"; +hash = "36faff761a443f00d6e36502b23de96007ec007b3428215f701ac7cab9093d64"; +url = "http://rubygems.org/downloads/newrelic_rpm-3.9.4.245.gem"; +version = "3.9.4.245"; +} +{ +name = "nokogiri"; +hash = "dfb23254b87672a93582981c4ac5880d178ff32db6878fc351d75198aa544836"; +url = "http://rubygems.org/downloads/nokogiri-1.6.2.1.gem"; +version = "1.6.2.1"; +} +{ +name = "nprogress-rails"; +hash = "048ca784af666dde59940a804801f2471ad791952b2dc43cfbdb7d6cbd54f899"; +url = "http://rubygems.org/downloads/nprogress-rails-0.1.2.3.gem"; +version = "0.1.2.3"; +} +{ +name = "oauth"; +hash = "bca47d77c946af466872269e37e470837858b1305d5143e5a56c50356e02b2cc"; +url = "http://rubygems.org/downloads/oauth-0.4.7.gem"; +version = "0.4.7"; +} +{ +name = "oauth2"; +hash = "e18808a91165f22b8ce7939a216a51bb50d16a90b592347084b5112a4815f3a1"; +url = "http://rubygems.org/downloads/oauth2-0.8.1.gem"; +version = "0.8.1"; +} +{ +name = "omniauth"; +hash = "d47132daf1c59b8c97b4c51f3f2e379b5b6ae2cd9e169d0a3e46de45b335efbd"; +url = "http://rubygems.org/downloads/omniauth-1.1.4.gem"; +version = "1.1.4"; +} +{ +name = "omniauth-github"; +hash = "94b41beb49cc16b1e7c5f7a91999d867b76d84a33c9a44e5839178289b8ddac2"; +url = "http://rubygems.org/downloads/omniauth-github-1.1.1.gem"; +version = "1.1.1"; +} +{ +name = "omniauth-google-oauth2"; +hash = "1c11a1c330f91a9a77e5c51b7f1b378aa8b06b548a3bc1545056cee28360ebdd"; +url = "http://rubygems.org/downloads/omniauth-google-oauth2-0.2.5.gem"; +version = "0.2.5"; +} +{ +name = "omniauth-oauth"; +hash = "9f1bfb30fe6ba823935330d2036e08a5406e980f1e20c9b1271b82ee34fbe759"; +url = "http://rubygems.org/downloads/omniauth-oauth-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "omniauth-oauth2"; +hash = "72b8ba77b9ead4320e7f4e430aee0f3ef759aed79ae52c3b0e8fb2f41785eb68"; +url = "http://rubygems.org/downloads/omniauth-oauth2-1.1.1.gem"; +version = "1.1.1"; +} +{ +name = "omniauth-shibboleth"; +hash = "b0a92a0bc1e47d96c70f1bec982425c73029725da331dcda2022af762b929276"; +url = "http://rubygems.org/downloads/omniauth-shibboleth-1.1.1.gem"; +version = "1.1.1"; +} +{ +name = "omniauth-twitter"; +hash = "cd110801549953505a6152ae1426956785aca0cb749ff82835e8d49898b30f18"; +url = "http://rubygems.org/downloads/omniauth-twitter-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "org-ruby"; +hash = "ea272d4c7d0ac0310c8bb58ac503ca04c5180ca5c64642be0c96569d514327e5"; +url = "http://rubygems.org/downloads/org-ruby-0.9.9.gem"; +version = "0.9.9"; +} +{ +name = "orm_adapter"; +hash = "aa5d0be5d540cbb46d3a93e88061f4ece6a25f6e97d6a47122beb84fe595e9b9"; +url = "http://rubygems.org/downloads/orm_adapter-0.5.0.gem"; +version = "0.5.0"; +} +{ +name = "pg"; +hash = "ba6827400e0614f8fd464543f6e10b307aadef58c59280c6560e6f2548599ed3"; +url = "http://rubygems.org/downloads/pg-0.15.1.gem"; +version = "0.15.1"; +} +{ +name = "phantomjs"; +hash = "42f3d5b561832a383076c1d49720ed4d2711f29acb85c701a07015b412436f33"; +url = "http://rubygems.org/downloads/phantomjs-1.9.2.0.gem"; +version = "1.9.2.0"; +} +{ +name = "poltergeist"; +hash = "db4580c0197729b1e7d2cc872ab3d1c5d98b759ac67720c0ba77fbc8752a6a23"; +url = "http://rubygems.org/downloads/poltergeist-1.5.1.gem"; +version = "1.5.1"; +} +{ +name = "polyglot"; +hash = "05409d9f736e1fd39635f8700b24e1156ae8e308e785d5d0f939c603fd529649"; +url = "http://rubygems.org/downloads/polyglot-0.3.4.gem"; +version = "0.3.4"; +} +{ +name = "posix-spawn"; +hash = "634746d6f090c1b15d2f92fa90c5ed4868e59c8752ca56a5d83af8f79c0a5110"; +url = "http://rubygems.org/downloads/posix-spawn-0.3.9.gem"; +version = "0.3.9"; +} +{ +name = "pry"; +hash = "3a521a98344c62096561773ab5b831f862432bc40ce3798bbbdead1c7f86b159"; +url = "http://rubygems.org/downloads/pry-0.9.12.4.gem"; +version = "0.9.12.4"; +} +{ +name = "pyu-ruby-sasl"; +hash = "5683a6bc5738db5a1bf5ceddeaf545405fb241b4184dd4f2587e679a7e9497e5"; +url = "http://rubygems.org/downloads/pyu-ruby-sasl-0.0.3.3.gem"; +version = "0.0.3.3"; +} +{ +name = "quiet_assets"; +hash = "3fbc8728462a42d58cd9101b0ad8a240d3cb90a248d5d4072af432fa946a2fa8"; +url = "http://rubygems.org/downloads/quiet_assets-1.0.2.gem"; +version = "1.0.2"; +} +{ +name = "racc"; +hash = "6282f61f123f4e1d39bac5ad19027e34c336a5e1d80f9e4769c80b16db11b583"; +url = "http://rubygems.org/downloads/racc-1.4.10.gem"; +version = "1.4.10"; +} +{ +name = "rack"; +hash = "e64af00234e8faaa69ea81ef4e3800f40743c69560f0dda8fc9969660e775fa7"; +url = "http://rubygems.org/downloads/rack-1.5.2.gem"; +version = "1.5.2"; +} +{ +name = "rack-accept"; +hash = "66247b5449db64ebb93ae2ec4af4764b87d1ae8a7463c7c68893ac13fa8d4da2"; +url = "http://rubygems.org/downloads/rack-accept-0.4.5.gem"; +version = "0.4.5"; +} +{ +name = "rack-attack"; +hash = "f910e5d0a54b7cc7e086bf111481a0e455260caf8184a33bbb9e96f8064ef49c"; +url = "http://rubygems.org/downloads/rack-attack-2.3.0.gem"; +version = "2.3.0"; +} +{ +name = "rack-cors"; +hash = "5a256bda2673c7bbba014587b1f93fd2e6fd80b7ac9804a0f90665add6ba087d"; +url = "http://rubygems.org/downloads/rack-cors-0.2.9.gem"; +version = "0.2.9"; +} +{ +name = "rack-mini-profiler"; +hash = "1c77870679e17b54c5657ce3e15a3b7f54813844c4ab3ff292181f2904d1404b"; +url = "http://rubygems.org/downloads/rack-mini-profiler-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "rack-mount"; +hash = "a25100725157aea263dcea4f75aaab4e23922dc0e09fffd60c94eade95c34125"; +url = "http://rubygems.org/downloads/rack-mount-0.8.3.gem"; +version = "0.8.3"; +} +{ +name = "rack-protection"; +hash = "ad8d7e99b47418e1361ae8aaa0a8591671c8065b958bcedaef92da121a2db863"; +url = "http://rubygems.org/downloads/rack-protection-1.5.1.gem"; +version = "1.5.1"; +} +{ +name = "rack-test"; +hash = "7e920b6aac888e4a3846e5997fb1cbf456bdb5846322b58dc31697a54a38b306"; +url = "http://rubygems.org/downloads/rack-test-0.6.2.gem"; +version = "0.6.2"; +} +{ +name = "rails"; +hash = "602275642419e731637c91421cf498f2994c2d9f1b94f6c713f3b7b8757b2aa5"; +url = "http://rubygems.org/downloads/rails-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "rails_autolink"; +hash = "384c17bee71ca5dc44f49401762f91abb6bc356dd564f380713fc974d2c25671"; +url = "http://rubygems.org/downloads/rails_autolink-1.1.6.gem"; +version = "1.1.6"; +} +{ +name = "rails_best_practices"; +hash = "859371ff63fcfe6a33e7012ce3e18df0c0f00579520c684a544dccfd33c7c691"; +url = "http://rubygems.org/downloads/rails_best_practices-1.14.4.gem"; +version = "1.14.4"; +} +{ +name = "railties"; +hash = "0cef786bd54741f6b6c2ff0bfb769a200222f7e8928b93caf61f87c7325f8ee6"; +url = "http://rubygems.org/downloads/railties-4.1.1.gem"; +version = "4.1.1"; +} +{ +name = "raindrops"; +hash = "2077f24017dad9637bc4e20e77f3cc533054190516e9e330476678e3cc7a689a"; +url = "http://rubygems.org/downloads/raindrops-0.12.0.gem"; +version = "0.12.0"; +} +{ +name = "rake"; +hash = "b504ad9d610b85ef0856a4771d024e4a66656c63a17121a3ed1d4d7db39c775b"; +url = "http://rubygems.org/downloads/rake-10.3.2.gem"; +version = "10.3.2"; +} +{ +name = "raphael-rails"; +hash = "6c89daf65f82621f7ff59948db1db0ca2f41422ceadf905ba18a58b7ab57516a"; +url = "http://rubygems.org/downloads/raphael-rails-2.1.2.gem"; +version = "2.1.2"; +} +{ +name = "rb-fsevent"; +hash = "e1aed0fa5b42f74ecc1321dd807296d688b0f4fada96e87a9b2113d91befb62d"; +url = "http://rubygems.org/downloads/rb-fsevent-0.9.3.gem"; +version = "0.9.3"; +} +{ +name = "rb-inotify"; +hash = "3b1e16da8b00849dfa3c6348cc6df6888a2d35d2bf432bc50267f4ec1e74a21c"; +url = "http://rubygems.org/downloads/rb-inotify-0.9.2.gem"; +version = "0.9.2"; +} +{ +name = "rdoc"; +hash = "a8e2b78f7e5ec4cc4716cd863975645f2f2377dc6db267a15e427e5fae2633ed"; +url = "http://rubygems.org/downloads/rdoc-3.12.2.gem"; +version = "3.12.2"; +} +{ +name = "redcarpet"; +hash = "ff5397c2b0d1344f065d07e58ed157f5bc25b49d44e723348620693ba928d71c"; +url = "http://rubygems.org/downloads/redcarpet-3.1.2.gem"; +version = "3.1.2"; +} +{ +name = "redis"; +hash = "e3c8203afbfb9e0cfe915a0610f6795e02ba2298e72e9326076eed2c048142c1"; +url = "http://rubygems.org/downloads/redis-3.0.6.gem"; +version = "3.0.6"; +} +{ +name = "redis-actionpack"; +hash = "e49029df46b15434591962cc004a1f0b07ab11276e00fd53ec835b85c7064d55"; +url = "http://rubygems.org/downloads/redis-actionpack-4.0.0.gem"; +version = "4.0.0"; +} +{ +name = "redis-activesupport"; +hash = "cd802d06716638fb000e209a769f1a3932285c8ba2b328aa0c501f0999fcb4a2"; +url = "http://rubygems.org/downloads/redis-activesupport-4.0.0.gem"; +version = "4.0.0"; +} +{ +name = "redis-namespace"; +hash = "c7c119c0a8c3876b7d7f0dc0ae2e3343352f1dfc6d978c9711b63b58518a6639"; +url = "http://rubygems.org/downloads/redis-namespace-1.4.1.gem"; +version = "1.4.1"; +} +{ +name = "redis-rack"; +hash = "68be24901183f1973059e837b1acc421cebd34766753ca6f6e7902fb50ef35f8"; +url = "http://rubygems.org/downloads/redis-rack-1.5.0.gem"; +version = "1.5.0"; +} +{ +name = "redis-rails"; +hash = "a7224c9a7c9bfc9d6080a0418b3c290b9d27ff88b481022b3958a1b2e0e1fc45"; +url = "http://rubygems.org/downloads/redis-rails-4.0.0.gem"; +version = "4.0.0"; +} +{ +name = "redis-store"; +hash = "9fb47e5dbc6bce6ab4206899f49c6ee8d4a0c6d4830bb0f042ea49df72804249"; +url = "http://rubygems.org/downloads/redis-store-1.1.4.gem"; +version = "1.1.4"; +} +{ +name = "ref"; +hash = "8a8ec8f40f1e622c4324055d85300e03d9a78a9faf476ea0d382f1af9dbe0fa7"; +url = "http://rubygems.org/downloads/ref-1.0.5.gem"; +version = "1.0.5"; +} +{ +name = "request_store"; +hash = "70adb9485eb22113bd165e259b929a449dfe2d2410a880566f06df6a164fc1cf"; +url = "http://rubygems.org/downloads/request_store-1.0.5.gem"; +version = "1.0.5"; +} +{ +name = "require_all"; +hash = "1d4e5729811a1d976916465b64c508481c7fe229bc1ca88c8b1665ad4c46809a"; +url = "http://rubygems.org/downloads/require_all-1.3.2.gem"; +version = "1.3.2"; +} +{ +name = "rest-client"; +hash = "a3203433b8b0c914648caea54395a8791a61e0df7d401c81f4e2b7f8a8fac75a"; +url = "http://rubygems.org/downloads/rest-client-1.6.7.gem"; +version = "1.6.7"; +} +{ +name = "rinku"; +hash = "eb5cec33af86da3002e66470d9a741a0726d6864a69b580abc798931b4b706ca"; +url = "http://rubygems.org/downloads/rinku-1.7.3.gem"; +version = "1.7.3"; +} +{ +name = "rouge"; +hash = "b41278cf37dcef392e1d195519b482f03d1b80878837926a8322c7db9cef0251"; +url = "http://rubygems.org/downloads/rouge-1.3.3.gem"; +version = "1.3.3"; +} +{ +name = "rspec"; +hash = "4f9fc6c58696faa22571ca80d710fd0e4f30eaeb700155968d36df303f279e8c"; +url = "http://rubygems.org/downloads/rspec-2.14.1.gem"; +version = "2.14.1"; +} +{ +name = "rspec-core"; +hash = "e714621feb592e515c3ca19a685505af1c2bbb2d713b85c0610ab80985624348"; +url = "http://rubygems.org/downloads/rspec-core-2.14.7.gem"; +version = "2.14.7"; +} +{ +name = "rspec-expectations"; +hash = "3cb74fd8427a56321ca09e598f2db509231bae0996800b12f30084d7c3882f3a"; +url = "http://rubygems.org/downloads/rspec-expectations-2.14.4.gem"; +version = "2.14.4"; +} +{ +name = "rspec-mocks"; +hash = "e745b215de211099681d3b128fc8af15616eb19101bdd76da47dca1c1dd86b8b"; +url = "http://rubygems.org/downloads/rspec-mocks-2.14.4.gem"; +version = "2.14.4"; +} +{ +name = "rspec-rails"; +hash = "6ee4375e977d03ca4945fd5d79debfa72239f7f35f3de9a162ab4adcd4d735e9"; +url = "http://rubygems.org/downloads/rspec-rails-2.14.0.gem"; +version = "2.14.0"; +} +{ +name = "ruby-progressbar"; +hash = "94265728146504d311c3d6a3c040fc4d45ada6fc9bf42b58dbef208c6cc97d9b"; +url = "http://rubygems.org/downloads/ruby-progressbar-1.2.0.gem"; +version = "1.2.0"; +} +{ +name = "rubyntlm"; +hash = "a07b9bacc0cf531c76d4f71ed0813b4055fe881447aede2bc7cd7e89ec808870"; +url = "http://rubygems.org/downloads/rubyntlm-0.1.1.gem"; +version = "0.1.1"; +} +{ +name = "rubypants"; +hash = "f07e38eac793655a0323fe91946081052341b9e69807026fcf102346589eedee"; +url = "http://rubygems.org/downloads/rubypants-0.2.0.gem"; +version = "0.2.0"; +} +{ +name = "rugged"; +hash = "e536ec53d7f08109960e159e5401e682dd03f6ab386f84f93ef71e1968817529"; +url = "http://rubygems.org/downloads/rugged-0.21.0.gem"; +version = "0.21.0"; +} +{ +name = "safe_yaml"; +hash = "139285ff8e70413d2a3721da4e742c736b4948682f0b80330a353e34d5dd6478"; +url = "http://rubygems.org/downloads/safe_yaml-0.9.7.gem"; +version = "0.9.7"; +} +{ +name = "sanitize"; +hash = "c3be075f5b38a1b02404be5778b181e50fba9ab253bac851cb217d9a71375b77"; +url = "http://rubygems.org/downloads/sanitize-2.1.0.gem"; +version = "2.1.0"; +} +{ +name = "sass"; +hash = "ddcd7d76d98daa8f3ebbaec196972500a6cf6e854f9c328fcfc9aa556f29bfac"; +url = "http://rubygems.org/downloads/sass-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "sass-rails"; +hash = "b57665f95f63f063137e365d3e8a1c6d1340ec892d875aeeab93fb60e13f2ec8"; +url = "http://rubygems.org/downloads/sass-rails-4.0.3.gem"; +version = "4.0.3"; +} +{ +name = "sdoc"; +hash = "c2f54086862252f487e0c4b05fc46d8659a4dba6deb2ad0a24ff9046c1c4889e"; +url = "http://rubygems.org/downloads/sdoc-0.3.20.gem"; +version = "0.3.20"; +} +{ +name = "seed-fu"; +hash = "eb09cfeb574f46a22b313e38fe7d4ae6bf2c6a57554d3f157778756b58bc81db"; +url = "http://rubygems.org/downloads/seed-fu-2.3.1.gem"; +version = "2.3.1"; +} +{ +name = "select2-rails"; +hash = "dcae2d6f92f94975080c14bee21a2b9745675135824f7ec298a9c94e329e9f7e"; +url = "http://rubygems.org/downloads/select2-rails-3.5.2.gem"; +version = "3.5.2"; +} +{ +name = "semantic-ui-sass"; +hash = "54a9f7c3ac28203f91e99f4f929c2851356796e3d7d2de3468ff060528db71a1"; +url = "http://rubygems.org/downloads/semantic-ui-sass-0.16.1.0.gem"; +version = "0.16.1.0"; +} +{ +name = "settingslogic"; +hash = "5925a91d0d48dfb59a6e48ae2bb9c9b801fe6fab25a8e8d302ce8699d92f2ae6"; +url = "http://rubygems.org/downloads/settingslogic-2.0.9.gem"; +version = "2.0.9"; +} +{ +name = "sexp_processor"; +hash = "71591ddbda99b5e12e4a46d377c87513850ca7aa4b1aa800ae02792cadee6be7"; +url = "http://rubygems.org/downloads/sexp_processor-4.4.0.gem"; +version = "4.4.0"; +} +{ +name = "shoulda-matchers"; +hash = "da4ce8e10970a5dfa88d30b7be06dbef87caf2aca4508343b31a59c434449fc6"; +url = "http://rubygems.org/downloads/shoulda-matchers-2.1.0.gem"; +version = "2.1.0"; +} +{ +name = "sidekiq"; +hash = "81c57e05311c7176e8e71373cf78874c9365f00ed40b9fd1a969863e56a10c53"; +url = "http://rubygems.org/downloads/sidekiq-2.17.0.gem"; +version = "2.17.0"; +} +{ +name = "simple_oauth"; +hash = "723f19781f5562182e075a0f31bca11a955962d933064abb23bce98ed035602d"; +url = "http://rubygems.org/downloads/simple_oauth-0.1.9.gem"; +version = "0.1.9"; +} +{ +name = "simplecov"; +hash = "4f205752a4f3730fd4c58678bbab4c83f4e2a6ca3bbea4cdf18cd86a70589eb7"; +url = "http://rubygems.org/downloads/simplecov-0.9.0.gem"; +version = "0.9.0"; +} +{ +name = "simplecov-html"; +hash = "69393ce932c2898dd5074913e360078f651f094a9b7300b286a78f43b11c164a"; +url = "http://rubygems.org/downloads/simplecov-html-0.8.0.gem"; +version = "0.8.0"; +} +{ +name = "sinatra"; +hash = "1a16a552d559be0fff6cefd2c84c1fecafcc54668fba540e99fe8f2692033e8a"; +url = "http://rubygems.org/downloads/sinatra-1.4.4.gem"; +version = "1.4.4"; +} +{ +name = "six"; +hash = "83c73d4aa60ff76172ec257f45b098c66f7a8b89883bcaaec42517287dbc0aae"; +url = "http://rubygems.org/downloads/six-0.2.0.gem"; +version = "0.2.0"; +} +{ +name = "slack-notifier"; +hash = "64166343518084e3b1cdf03bb49ff42469dae8aab868fafa001c9f6a4f8d4604"; +url = "http://rubygems.org/downloads/slack-notifier-0.3.2.gem"; +version = "0.3.2"; +} +{ +name = "slim"; +hash = "07cdf67f971b99a360c9ded6ea70ae5351e1236182997dff8118ef5ea242a7ea"; +url = "http://rubygems.org/downloads/slim-2.0.2.gem"; +version = "2.0.2"; +} +{ +name = "slop"; +hash = "568b7d1d48d675ce2778e5fd1b9de56ff754e3eb4b589e4918f2cf8d25e56df4"; +url = "http://rubygems.org/downloads/slop-3.4.7.gem"; +version = "3.4.7"; +} +{ +name = "spinach"; +hash = "a43718a977de8c2bb0fd952af23d56a69c046d28dac687057405c7301ccfdf0c"; +url = "http://rubygems.org/downloads/spinach-0.8.7.gem"; +version = "0.8.7"; +} +{ +name = "spinach-rails"; +hash = "e0d045ae1266f46549570c148d1696ac7d4baa518f8b974a7c8ed949bd63cad9"; +url = "http://rubygems.org/downloads/spinach-rails-0.2.1.gem"; +version = "0.2.1"; +} +{ +name = "spring"; +hash = "92aa8cf28fec20b0f760e2cf8efd1990be2c30c2e79167cdd19e8344420b72c5"; +url = "http://rubygems.org/downloads/spring-1.1.3.gem"; +version = "1.1.3"; +} +{ +name = "spring-commands-rspec"; +hash = "61d75e234afd79f247942dca387c3a7fffc0de9527f16aea4d5fdd66fd82cffc"; +url = "http://rubygems.org/downloads/spring-commands-rspec-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "spring-commands-spinach"; +hash = "694fbf041b5f357bd29fab2ff44013f42e894bf1af498bcce726498f5b56128d"; +url = "http://rubygems.org/downloads/spring-commands-spinach-1.0.0.gem"; +version = "1.0.0"; +} +{ +name = "sprockets"; +hash = "b06a4a66a74cce8a3dbd53a9078c9b71b94f5652a6fe92809f28786d8fcd5920"; +url = "http://rubygems.org/downloads/sprockets-2.11.0.gem"; +version = "2.11.0"; +} +{ +name = "sprockets-rails"; +hash = "9e134d28c4d05f86f3c8ebcdecd50ec060bd33e8bdcb6461cfcf0f2b77f26d8a"; +url = "http://rubygems.org/downloads/sprockets-rails-2.1.3.gem"; +version = "2.1.3"; +} +{ +name = "stamp"; +hash = "1ad6622d000cd390b9b523eb9270fc902abd24a685ce0c73529f344d6a9fa4f0"; +url = "http://rubygems.org/downloads/stamp-0.5.0.gem"; +version = "0.5.0"; +} +{ +name = "state_machine"; +hash = "80fcddc91976baec8713c37c28b5bc0655f5f2e0a1412a1a4a3aac41082cc2ed"; +url = "http://rubygems.org/downloads/state_machine-1.2.0.gem"; +version = "1.2.0"; +} +{ +name = "stringex"; +hash = "dbd556b4b59d994de64c8fa91ef959667338d840b814fc72531f8253dbba179d"; +url = "http://rubygems.org/downloads/stringex-2.5.1.gem"; +version = "2.5.1"; +} +{ +name = "temple"; +hash = "3374f339c3b54611538b9811c0c46db8e06b48ed212db741cd7f52baf59caa26"; +url = "http://rubygems.org/downloads/temple-0.6.7.gem"; +version = "0.6.7"; +} +{ +name = "term-ansicolor"; +hash = "b9534713ba4c2a48f2291fadf9ce2edae9f2dc96157ee812fe8fe16a70c081ac"; +url = "http://rubygems.org/downloads/term-ansicolor-1.2.2.gem"; +version = "1.2.2"; +} +{ +name = "test_after_commit"; +hash = "8be009b5b7dd8f6e712ea92a079625b9a84f9a010ef2d5d5e44bcd45c353fa8f"; +url = "http://rubygems.org/downloads/test_after_commit-0.2.2.gem"; +version = "0.2.2"; +} +{ +name = "therubyracer"; +hash = "06a711c23c6fcabc60a38413d6e08023b4717b725c0f19b3fd3d6161f714b3a0"; +url = "http://rubygems.org/downloads/therubyracer-0.12.0.gem"; +version = "0.12.0"; +} +{ +name = "thin"; +hash = "a0b80e1632d3529a5c4b87e07d9ab146e0dde5e506c20f3a740fe8b364d5bd18"; +url = "http://rubygems.org/downloads/thin-1.6.1.gem"; +version = "1.6.1"; +} +{ +name = "thor"; +hash = "9ff834f031b5550c743bb8a3139317fefdae9cdebd02d60de376658f427fe522"; +url = "http://rubygems.org/downloads/thor-0.19.1.gem"; +version = "0.19.1"; +} +{ +name = "thread_safe"; +hash = "16315baa971c48d00104bcd35e8934e3f9ccfd3b8f429e3fca7ee2dfd81734b2"; +url = "http://rubygems.org/downloads/thread_safe-0.3.4.gem"; +version = "0.3.4"; +} +{ +name = "tilt"; +hash = "39820562c4f5db45fe18de87ccc30a0e77a998bf5334b1d8c10a2f7dbc1f5903"; +url = "http://rubygems.org/downloads/tilt-1.4.1.gem"; +version = "1.4.1"; +} +{ +name = "timers"; +hash = "3bbb9651a73e43e47950a5e13a7fa62f852cd5c46e421bb671e9ade1fbb47b74"; +url = "http://rubygems.org/downloads/timers-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "tinder"; +hash = "0b06fd2a72ed424e82b1896852dd9ebb10791ef6ab8412e74ad2fa9069f6bd47"; +url = "http://rubygems.org/downloads/tinder-1.9.3.gem"; +version = "1.9.3"; +} +{ +name = "tins"; +hash = "c53bf237462be8d61cfa2a5f4b48f372d010825b0dc594c952d9857fe4c3ef30"; +url = "http://rubygems.org/downloads/tins-0.13.1.gem"; +version = "0.13.1"; +} +{ +name = "treetop"; +hash = "ffa68f201c0f62c26b0a1d13233d73194400596964696843f87ebb5d812f12ff"; +url = "http://rubygems.org/downloads/treetop-1.4.15.gem"; +version = "1.4.15"; +} +{ +name = "turbolinks"; +hash = "d92fd8f1627a6eadfaa39b76da83c257181e786557f54859d81ab2b08d73e8ff"; +url = "http://rubygems.org/downloads/turbolinks-2.0.0.gem"; +version = "2.0.0"; +} +{ +name = "twitter-stream"; +hash = "3866afdfbdf083e773b46afb3037ff3e3b1ebf8014ab88353153daddc70b4847"; +url = "http://rubygems.org/downloads/twitter-stream-0.1.16.gem"; +version = "0.1.16"; +} +{ +name = "tzinfo"; +hash = "fdb1d3fdf2776d490c82a0e589a08e7cbde70ac1ae7d2b1f0b7e77f3e6b801b0"; +url = "http://rubygems.org/downloads/tzinfo-1.2.2.gem"; +version = "1.2.2"; +} +{ +name = "uglifier"; +hash = "5e942f02d11d9e4f6e18aa84cfd909e569fe887b12c3ecf66d92e8cf4162acf0"; +url = "http://rubygems.org/downloads/uglifier-2.3.2.gem"; +version = "2.3.2"; +} +{ +name = "underscore-rails"; +hash = "e229a9668f799ea169616fa59da3f6cf48f259d9c1dd2ef52ff2a151bd6be3f5"; +url = "http://rubygems.org/downloads/underscore-rails-1.4.4.gem"; +version = "1.4.4"; +} +{ +name = "unf"; +hash = "4999517a531f2a955750f8831941891f6158498ec9b6cb1c81ce89388e63022e"; +url = "http://rubygems.org/downloads/unf-0.1.4.gem"; +version = "0.1.4"; +} +{ +name = "unf_ext"; +hash = "afcdba30a57665a4540c5d43b2833c6a3677a3296428fa70fbd7b4c8feaceb1f"; +url = "http://rubygems.org/downloads/unf_ext-0.0.6.gem"; +version = "0.0.6"; +} +{ +name = "unicorn"; +hash = "fd0b12148a24acfd8bf28a0322e4116061e64e271253e077999e4ec531a74966"; +url = "http://rubygems.org/downloads/unicorn-4.6.3.gem"; +version = "4.6.3"; +} +{ +name = "unicorn-worker-killer"; +hash = "6d2819347c514ff65bcdbda745a416a2c93e18e90e1e347c6f4931e7b1a6c78b"; +url = "http://rubygems.org/downloads/unicorn-worker-killer-0.4.2.gem"; +version = "0.4.2"; +} +{ +name = "version_sorter"; +hash = "aeeae527de4fb3146bbdaa9283f3fb087fedbe0cee80645c12d1970fe4947873"; +url = "http://rubygems.org/downloads/version_sorter-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "virtus"; +hash = "03d81d65377a603894b058c0ee78130dda1c3e6d56918d40444f11dba5d644a6"; +url = "http://rubygems.org/downloads/virtus-1.0.1.gem"; +version = "1.0.1"; +} +{ +name = "warden"; +hash = "97769e5b5d230fec4f77e91b1116b28fdd27428f4acab68dc5ed025af9d37f7a"; +url = "http://rubygems.org/downloads/warden-1.2.3.gem"; +version = "1.2.3"; +} +{ +name = "webmock"; +hash = "89e8ced0a58bcf68bec818f901ce966b4f8938dd20b101044bd6408589a957f8"; +url = "http://rubygems.org/downloads/webmock-1.16.0.gem"; +version = "1.16.0"; +} +{ +name = "websocket-driver"; +hash = "4e9a04c1e370dada829738ee1433a98e6721e7fa83b98fceef089fe6bce97638"; +url = "http://rubygems.org/downloads/websocket-driver-0.3.3.gem"; +version = "0.3.3"; +} +{ +name = "wikicloth"; +hash = "7ac8a9ca0a948cf472851e521afc6c2a6b04a8f91ef1d824ba6a61ffbd60e6ca"; +url = "http://rubygems.org/downloads/wikicloth-0.8.1.gem"; +version = "0.8.1"; +} +{ +name = "xpath"; +hash = "9ca4a1cc88d9ab16c591468cce7b5d00ee06a8a76b841f8438970c7a44c86c12"; +url = "http://rubygems.org/downloads/xpath-2.0.0.gem"; +version = "2.0.0"; +} +] diff --git a/pkgs/applications/version-management/gitlab/README b/pkgs/applications/version-management/gitlab/README new file mode 100644 index 000000000000..cd8d4748e700 --- /dev/null +++ b/pkgs/applications/version-management/gitlab/README @@ -0,0 +1,5 @@ +to regenerate Gemfile.nix and Gemfile.lock you need to + + % nix-build bootstrap.nix + % cp result/Gemfile.nix ./ + % cp result/Gemfile.lock ./ diff --git a/pkgs/applications/version-management/gitlab/bootstrap.nix b/pkgs/applications/version-management/gitlab/bootstrap.nix new file mode 100644 index 000000000000..1b3c1eec9c26 --- /dev/null +++ b/pkgs/applications/version-management/gitlab/bootstrap.nix @@ -0,0 +1,43 @@ +{ pkgs ? import {} +}: + +with pkgs; + +let + +in stdenv.mkDerivation rec { + version = "7.4.2"; + name = "gitlab-${version}"; + __noChroot = true; + src = fetchurl { + url = "https://github.com/gitlabhq/gitlabhq/archive/v${version}.zip"; + sha256 = "01iplkpa4scr0wcap6vjrc960dj15z4ciclaqswj0sz5hrp9glw6"; + }; + buildInputs = [ + ruby rubyLibs.bundler libiconv libxslt libxml2 pkgconfig + libffi postgresql which stdenv unzip + ]; + installPhase = '' + unset http_proxy + unset ftp_proxy + + cp -R . $out + cp ${./generate_nix_requirements.rb} $out/generate_nix_requirements.rb + cd $out + + cat > config/database.yml < config/database.yml < + password: <%= ENV["GITLAB_DATABASE_PASSWORD"] || "blerg" %> + username: gitlab + encoding: utf8 + EOF + + mkdir -p vendor/cache + ${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)} + + bundle config build.nokogiri \ + --use-system-libraries \ + --with-xslt-dir=${libxslt} \ + --with-xml2-dir=${libxml2} \ + --with-pkg-config=${pkgconfig}/bin/pkg-config \ + --with-pg-config=${postgresql}/bin/pg_config + + # See https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide: + bundle install -j4 --verbose --local --deployment --without development test mysql + + # For reasons I don't understand "bundle exec" ignores the + # RAILS_ENV causing tests to be executed that fail because we're + # not installing development and test gems above. Deleting the + # tests works though.: + rm $out/share/gitlab/lib/tasks/test.rake + + # Assets + bundle exec rake assets:precompile RAILS_ENV=production + ''; + + meta = with stdenv.lib; { + homepage = http://www.gitlab.com/; + platforms = platforms.linux; + maintainers = [ ]; + license = licenses.mit; + }; +} diff --git a/pkgs/applications/version-management/gitlab/generate_nix_requirements.rb b/pkgs/applications/version-management/gitlab/generate_nix_requirements.rb new file mode 100755 index 000000000000..ed47d52c9c1b --- /dev/null +++ b/pkgs/applications/version-management/gitlab/generate_nix_requirements.rb @@ -0,0 +1,56 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'bundler' +require 'fileutils' +require 'net/http' +require 'net/https' +require 'uri' + +TMP_DIR = "/tmp/gems" + +FileUtils.rm_rf(TMP_DIR) if File.exists?(TMP_DIR) +FileUtils.mkdir TMP_DIR + +GEMSERVER = "http://rubygems.org" + +# inspect Gemfile.lock +lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock")) + +to_mirror = {} + +uri = URI(GEMSERVER) +http = Net::HTTP.new(uri.host, uri.port) +http.use_ssl = uri.scheme == 'https' + +requirements = {} + +lockfile.specs.each do |s| + possible_gem_name = "#{s.name}-#{s.version.to_s}.gem" + + Dir.chdir TMP_DIR do + filename = `gem fetch #{s.name} -v #{s.version.to_s}`.split()[1] + hash = `sha256sum #{filename}.gem` + url = "#{GEMSERVER}/downloads/#{filename}.gem" + puts url + requirements[s.name] = { :version => s.version.to_s, + :hash => hash.split().first, + :url => url,} + + end +end + +filename = 'Gemfile.nix' + +File.open(filename, 'w') do |file| + file.puts "[" + requirements.each do |name, info| + file.puts "{" + file.puts ['name = ', '"', name, '";'].join('') + file.puts ['hash = ', '"', info[:hash], '";'].join('') + file.puts ['url = ', '"', info[:url], '";'].join('') + file.puts ['version = ', '"', info[:version], '";'].join('') + file.puts "}" + end + file.puts "]" +end diff --git a/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch new file mode 100644 index 000000000000..f5532bbd67c9 --- /dev/null +++ b/pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch @@ -0,0 +1,109 @@ +diff --git a/config/environments/production.rb b/config/environments/production.rb +index 78bf543..9b37122 100644 +--- a/config/environments/production.rb ++++ b/config/environments/production.rb +@@ -66,10 +66,10 @@ Gitlab::Application.configure do + + config.action_mailer.delivery_method = :sendmail + # Defaults to: +- # # config.action_mailer.sendmail_settings = { +- # # location: '/usr/sbin/sendmail', +- # # arguments: '-i -t' +- # # } ++ config.action_mailer.sendmail_settings = { ++ location: '/var/setuid-wrappers/sendmail', ++ arguments: '-i -t' ++ } + config.action_mailer.perform_deliveries = true + config.action_mailer.raise_delivery_errors = true + +diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example +index e7a8d08..834ecaf 100644 +--- a/config/gitlab.yml.example ++++ b/config/gitlab.yml.example +@@ -17,8 +17,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 +@@ -31,11 +31,11 @@ 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 + + ## Email settings + # Email address used in the "From" field in mails sent by GitLab +- email_from: example@example.com ++ email_from: <%= ENV['GITLAB_EMAIL_FROM'] %> + + # Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample). + +@@ -230,12 +230,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'] %> + # keep_time: 604800 # default: 0 (forever) (in seconds) + # upload: + # # Fog storage connection settings, see http://fog.io/storage/ . +@@ -249,11 +249,11 @@ 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'] %> + + # Git over HTTP + upload_pack: true +@@ -266,7 +266,7 @@ production: &base + # CAUTION! + # Use the default values unless you really know what you are doing + git: +- bin_path: /usr/bin/git ++ bin_path: git + # 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 +@@ -299,7 +299,7 @@ test: + gravatar: + enabled: true + gitlab: +- host: localhost ++ host: <%= ENV['GITLAB_HOST'] %> + port: 80 + + # 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 8e4717b..abfe2e4 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 +- 'application.log' ++ ENV["GITLAB_APPLICATION_LOG_PATH"] + end + + def format_message(severity, timestamp, progname, msg) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 88159b842330..480fb494ba4e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1271,6 +1271,10 @@ let gifsicle = callPackage ../tools/graphics/gifsicle { }; + gitlab = callPackage ../applications/version-management/gitlab { }; + + gitlab-shell = callPackage ../applications/version-management/gitlab-shell { }; + glusterfs = callPackage ../tools/filesystems/glusterfs { }; glmark2 = callPackage ../tools/graphics/glmark2 { };