class Object
Public Instance Methods
Source
# File lib/gemirro/server.rb, line 87 get '/names' do content_type 'text/plain' content_path = Dir.glob(File.join(Gemirro.configuration.destination, 'names.*.*.list')).last _, etag, repr_digest, _ = File.basename(content_path).split('.') headers 'etag' => %("#{etag}") headers 'repr-digest' => %(sha-256=#{Base64.strict_encode64([repr_digest].pack('H*'))}) send_file content_path end
compact_index, Return list of available gem names
@return [nil]
Source
# File lib/gemirro/server.rb, line 103 get '/versions' do content_type 'text/plain' content_path = Dir.glob(File.join(Utils.configuration.destination, 'versions.*.*.list')).last _, etag, repr_digest, _ = File.basename(content_path).split('.') headers 'etag' => %("#{etag}") headers 'repr-digest' => %(sha-256=#{Base64.strict_encode64([repr_digest].pack('H*'))}) send_file content_path end
compact_index, Return list of gem, including versions
@return [nil]
Source
# File lib/gemirro/cli/server.rb, line 44 def create_pid File.write(@pid_file, Process.pid.to_s) rescue Errno::EACCES $stdout.reopen @orig_stdout puts "Error: Can't write to #{@pid_file} - Permission denied" exit! end
Source
# File lib/gemirro/server.rb, line 155 def dependencies_loader(names) names.collect do |name| f = File.join(settings.public_folder, 'api', 'v1', 'dependencies', "#{name}.*.*.list") Marshal.load(File.read(Dir.glob(f).last)) rescue StandardError => e env['rack.errors'].write "Cound not open #{f}\n" env['rack.errors'].write "#{e.message}\n" e.backtrace.each do |err| env['rack.errors'].write "#{err}\n" end nil end .flatten .compact end
Compile fragments for /api/v1/dependencies
@return [nil]
Source
# File lib/gemirro/cli/server.rb, line 52 def destroy_pid File.delete(@pid_file) if File.exist?(@pid_file) && pid == Process.pid end
Source
# File lib/gemirro/cli/server.rb, line 25 def load_configuration(opts) Gemirro::CLI.load_configuration(opts[:c]) config = Gemirro.configuration config.logger_level = opts[:l] if opts[:l] unless File.directory?(config.destination) config.logger.error("The directory #{config.destination} does not exist") abort end @pid_file = File.expand_path(File.join(config.destination, '..', 'gemirro.pid')) require 'gemirro/server' end
Source
# File lib/gemirro/cli/server.rb, line 56 def pid File.open(@pid_file, 'r') do |f| return f.gets.to_i end rescue Errno::ENOENT puts "Error: PID File not found #{@pid_file}" end
Source
# File lib/gemirro/cli/server.rb, line 112 def running?(process_id) return false if process_id.nil? Process.getpgid(process_id.to_i) != -1 rescue Errno::ESRCH false end
Source
# File lib/gemirro/cli/server.rb, line 64 def start puts 'Starting...' if File.exist?(@pid_file) && running?(pid) puts "Error: #{$PROGRAM_NAME} already running" abort end Process.daemon if Gemirro::Utils.configuration.server.daemonize create_pid $stdout.reopen @orig_stdout puts "done! (PID is #{pid})\n" Gemirro::Server.run! destroy_pid $stdout.reopen File::NULL, 'a' end
Source
# File lib/gemirro/cli/server.rb, line 103 def status if running?(pid) puts "#{$PROGRAM_NAME} is running" else puts "#{$PROGRAM_NAME} is not running" abort end end
Source
# File lib/gemirro/cli/server.rb, line 80 def stop process_pid = pid return if process_pid.nil? begin Process.kill('TERM', process_pid) Timeout.timeout(30) { sleep 0.1 while running?(process_pid) } rescue Errno::ESRCH puts "Error: Couldn't find process with PID #{process_pid}" exit! rescue Timeout::Error puts 'timeout while sending TERM signal, sending KILL signal now... ' Process.kill('KILL', process_pid) destroy_pid end puts 'done!' end
Source
# File lib/gemirro/server.rb, line 64 get('/gem/:gemname') do gems = Utils.gems_collection gem = gems.find_by_name(params[:gemname]) return not_found if gem.nil? erb(:gem, {}, gem: gem) end
Display information about one gem, human readable
@return [nil]