module Gemstash
Constants
- VERSION
Public Class Methods
available?()
click to toggle source
# File lib/gemstash/env.rb, line 48 def self.available? !Thread.current[:gemstash_env].nil? end
current()
click to toggle source
# File lib/gemstash/env.rb, line 52 def self.current raise EnvNotSetError unless Thread.current[:gemstash_env] Thread.current[:gemstash_env] end
current=(value)
click to toggle source
# File lib/gemstash/env.rb, line 58 def self.current=(value) Thread.current[:gemstash_env] = value end
migrate(db)
click to toggle source
# File lib/gemstash/env.rb, line 145 def self.migrate(db) Sequel.extension :migration migrations_dir = File.expand_path("migrations", __dir__) Sequel::Migrator.run(db, migrations_dir, :use_transactions => true) end
new(config = nil, cache: nil, db: nil)
click to toggle source
# File lib/gemstash/env.rb, line 42 def initialize(config = nil, cache: nil, db: nil) @config = config @cache = cache @db = db end
Public Instance Methods
atomic_write(file, &block)
click to toggle source
# File lib/gemstash/env.rb, line 115 def atomic_write(file, &block) File.atomic_write(file, File.dirname(file), &block) end
base_file(path)
click to toggle source
# File lib/gemstash/env.rb, line 90 def base_file(path) File.join(base_path, path) end
base_path()
click to toggle source
# File lib/gemstash/env.rb, line 78 def base_path dir = config[:base_path] if config.default?(:base_path) FileUtils.mkpath(dir) unless Dir.exist?(dir) else raise "Base path '#{dir}' is not writable" unless File.writable?(dir) end dir end
cache()
click to toggle source
# File lib/gemstash/env.rb, line 151 def cache @cache ||= Gemstash::Cache.new(cache_client) end
cache_client()
click to toggle source
# File lib/gemstash/env.rb, line 155 def cache_client @cache_client ||= begin case config[:cache_type] when "memory" Gemstash::LruReduxClient.new when "memcached" Dalli::Client.new(config[:memcached_servers]) when "redis" Gemstash::RedisClient.new(config[:redis_servers]) else raise "Invalid cache client: '#{config[:cache_type]}'" end end end
config()
click to toggle source
# File lib/gemstash/env.rb, line 62 def config @config ||= Gemstash::Configuration.new end
config=(value)
click to toggle source
# File lib/gemstash/env.rb, line 66 def config=(value) reset @config = value end
db()
click to toggle source
# File lib/gemstash/env.rb, line 123 def db @db ||= begin case config[:db_adapter] when "sqlite3" db_path = base_file("gemstash.db") db = if RUBY_PLATFORM == "java" Sequel.connect("jdbc:sqlite:#{db_path}", config.database_connection_config) else Sequel.connect("sqlite://#{CGI.escape(db_path)}", config.database_connection_config) end when "postgres", "mysql", "mysql2" db = Sequel.connect(config[:db_url], config.database_connection_config) else raise "Unsupported DB adapter: '#{config[:db_adapter]}'" end Gemstash::Env.migrate(db) db end end
log_file()
click to toggle source
# File lib/gemstash/env.rb, line 94 def log_file if config[:log_file] == :stdout $stdout else base_file(config[:log_file] || "server.log") end end
pidfile()
click to toggle source
# File lib/gemstash/env.rb, line 102 def pidfile if config[:pidfile] pathname = Pathname.new(config[:pidfile]) if pathname.relative? base_file(pathname.to_s) else pathname.to_s end else base_file("puma.pid") end end
rackup()
click to toggle source
# File lib/gemstash/env.rb, line 119 def rackup File.expand_path("config.ru", __dir__) end
reset()
click to toggle source
# File lib/gemstash/env.rb, line 71 def reset @config = nil @cache = nil @cache_client = nil @db = nil end