Module: Litestream::Commands
- Defined in:
- lib/litestream/commands.rb
Constant Summary collapse
- DEFAULT_DIR =
File.(File.join(__dir__, "..", "..", "exe"))
- GEM_NAME =
"litestream"- UnsupportedPlatformException =
raised when the host platform is not supported by upstream litestream’s binary releases
Class.new(StandardError)
- ExecutableNotFoundException =
raised when the litestream executable could not be found where we expected it to be
Class.new(StandardError)
- DirectoryNotFoundException =
raised when LITESTREAM_INSTALL_DIR does not exist
Class.new(StandardError)
- DatabaseRequiredException =
raised when a litestream command requires a database argument but it isn’t provided
Class.new(StandardError)
- CommandFailedException =
raised when a litestream command fails
Class.new(StandardError)
Class Method Summary collapse
- .databases(async: false, **argv) ⇒ Object
- .executable(exe_path: DEFAULT_DIR) ⇒ Object
- .generations(database, async: false, **argv) ⇒ Object
- .platform ⇒ Object
- .replicate(async: false, **argv) ⇒ Object
- .restore(database, async: false, **argv) ⇒ Object
- .snapshots(database, async: false, **argv) ⇒ Object
- .wal(database, async: false, **argv) ⇒ Object
Class Method Details
.databases(async: false, **argv) ⇒ Object
91 92 93 |
# File 'lib/litestream/commands.rb', line 91 def databases(async: false, **argv) execute("databases", argv, async: async, tabled_output: true) end |
.executable(exe_path: DEFAULT_DIR) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/litestream/commands.rb', line 29 def executable(exe_path: DEFAULT_DIR) litestream_install_dir = ENV["LITESTREAM_INSTALL_DIR"] if litestream_install_dir if File.directory?(litestream_install_dir) warn "NOTE: using LITESTREAM_INSTALL_DIR to find litestream executable: #{litestream_install_dir}" exe_path = litestream_install_dir exe_file = File.(File.join(litestream_install_dir, "litestream")) else raise DirectoryNotFoundException, " LITESTREAM_INSTALL_DIR is set to \#{litestream_install_dir}, but that directory does not exist.\n MESSAGE\n end\n else\n if Litestream::Upstream::NATIVE_PLATFORMS.keys.none? { |p| Gem::Platform.match_gem?(Gem::Platform.new(p), GEM_NAME) }\n raise UnsupportedPlatformException, <<~MESSAGE\n litestream-ruby does not support the \#{platform} platform\n Please install litestream following instructions at https://litestream.io/install\n MESSAGE\n end\n\n exe_file = Dir.glob(File.expand_path(File.join(exe_path, \"*\", \"litestream\"))).find do |f|\n Gem::Platform.match_gem?(Gem::Platform.new(File.basename(File.dirname(f))), GEM_NAME)\n end\n end\n\n if exe_file.nil? || !File.exist?(exe_file)\n raise ExecutableNotFoundException, <<~MESSAGE\n Cannot find the litestream executable for \#{platform} in \#{exe_path}\n\n If you're using bundler, please make sure you're on the latest bundler version:\n\n gem install bundler\n bundle update --bundler\n\n Then make sure your lock file includes this platform by running:\n\n bundle lock --add-platform \#{platform}\n bundle install\n\n See `bundle lock --help` output for details.\n\n If you're still seeing this message after taking those steps, try running\n `bundle config` and ensure `force_ruby_platform` isn't set to `true`. See\n https://github.com/fractaledmind/litestream-ruby#check-bundle_force_ruby_platform\n for more details.\n MESSAGE\n end\n\n exe_file\nend\n" |
.generations(database, async: false, **argv) ⇒ Object
95 96 97 98 99 |
# File 'lib/litestream/commands.rb', line 95 def generations(database, async: false, **argv) raise DatabaseRequiredException, "database argument is required for generations command, e.g. litestream:generations -- --database=path/to/database.sqlite" if database.nil? execute("generations", argv, database, async: async, tabled_output: true) end |
.platform ⇒ Object
25 26 27 |
# File 'lib/litestream/commands.rb', line 25 def platform [:cpu, :os].map { |m| Gem::Platform.local.send(m) }.join("-") end |
.replicate(async: false, **argv) ⇒ Object
80 81 82 |
# File 'lib/litestream/commands.rb', line 80 def replicate(async: false, **argv) execute("replicate", argv, async: async, tabled_output: false) end |
.restore(database, async: false, **argv) ⇒ Object
84 85 86 87 88 89 |
# File 'lib/litestream/commands.rb', line 84 def restore(database, async: false, **argv) raise DatabaseRequiredException, "database argument is required for restore command, e.g. litestream:restore -- --database=path/to/database.sqlite" if database.nil? argv.stringify_keys! execute("restore", argv, database, async: async, tabled_output: false) end |
.snapshots(database, async: false, **argv) ⇒ Object
101 102 103 104 105 |
# File 'lib/litestream/commands.rb', line 101 def snapshots(database, async: false, **argv) raise DatabaseRequiredException, "database argument is required for snapshots command, e.g. litestream:snapshots -- --database=path/to/database.sqlite" if database.nil? execute("snapshots", argv, database, async: async, tabled_output: true) end |
.wal(database, async: false, **argv) ⇒ Object
107 108 109 110 111 |
# File 'lib/litestream/commands.rb', line 107 def wal(database, async: false, **argv) raise DatabaseRequiredException, "database argument is required for wal command, e.g. litestream:wal -- --database=path/to/database.sqlite" if database.nil? execute("wal", argv, database, async: async, tabled_output: true) end |