Sha256: 48dd5f21e3b58f706c21ab8e9e1b8991570db99e47b230f4a95456bd9a2a9ae7

Contents?: true

Size: 1.48 KB

Versions: 7

Compression:

Stored size: 1.48 KB

Contents

LITESTREAM_CONFIG = ENV["LITESTREAM_CONFIG"] || Rails.root.join("tmp/litestream.yml").to_s

LITESTREAM_TEMPLATE = <<-EOF
# This is the configuration file for litestream.
#
# For more details, see: https://litestream.io/reference/config/
#
dbs:
<%% for db in @dbs -%>
  - path: <%%= db %>
    replicas:
      - type: s3
        endpoint: $AWS_ENDPOINT_URL_S3
        bucket: $BUCKET_NAME
        path: storage/<%%= File.basename(db) %>
        access-key-id: $AWS_ACCESS_KEY_ID
        secret-access-key: $AWS_SECRET_ACCESS_KEY
<%% end -%>
EOF

namespace :litestream do
  task prepare: "db:load_config" do
    require "erubi"

    @dbs =
      ActiveRecord::Base
        .configurations
        .configs_for(env_name: "production", include_hidden: true)
        .select { |config| [ "sqlite3", "litedb" ].include? config.adapter }
        .map(&:database)

    result = eval(Erubi::Engine.new(LITESTREAM_TEMPLATE).src)

    unless File.exist?(LITESTREAM_CONFIG) && File.read(LITESTREAM_CONFIG) == result
      File.write(LITESTREAM_CONFIG, result)
    end

    @dbs.each do |db|
      next if File.exist?(db) or !ENV["BUCKET_NAME"]
      system "litestream restore -config #{LITESTREAM_CONFIG} -if-replica-exists #{db}"
      exit $?.exitstatus unless $?.exitstatus == 0
    end
  end

  task :run do
    require "shellwords"

    exec(*%w[bundle exec litestream replicate -config],
      LITESTREAM_CONFIG, "-exec", Shellwords.join(ARGV[1..-1]))
  end
end

namespace :db do
  task prepare: "litestream:prepare"
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dockerfile-rails-1.7.6 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.5 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.4 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.3 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.2 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.1 lib/generators/templates/litestream.rake.erb
dockerfile-rails-1.7.0 lib/generators/templates/litestream.rake.erb