litestream 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8879b22153e57c77a9f076ca48c05826029f05695cb4312c1b23628ac8227745
4
- data.tar.gz: bdf497fc5db0593e229d7dd3442b9fe6bd787aa3e91561c0c0f0858a7e47da18
3
+ metadata.gz: 3437fcda9be45b8f50a4fcae89e6cc07d3ea590d7e3f0d2f10e50c9f8c6058b6
4
+ data.tar.gz: f53e83796ed362491b50929d2924d070b6efa166830f7de6195e39300121be81
5
5
  SHA512:
6
- metadata.gz: ba0bcb02c5fbaa65489f3064769e49af0b46f16c86d1db0e22df73f811b70725cb645accb19830fd52ea28284d1e966de8929a568418ba00b6234a7d8daf59a4
7
- data.tar.gz: 2e9c35ebf0c6182c177f65a244bc52ea033d2b1bbc34ee81eb96927c1996bc4650fa4416d0384f9e94d22f320a443ae3fc0da11cd14ec8499c7e97c24d662cce
6
+ metadata.gz: d8731b80f97dee5bc512e4f4acd58aebb63a435379736d281edc8bd2b42e6cc524c2eb7a55fefc2cf93218b91b2fb12c4fe180685031c9924dacd73a918fe344
7
+ data.tar.gz: 209fec5c3e355675feeee661ca64194cae370b85cbe90e162aaa2df059b2ccc5806b44e94daf706c29140e106e716eb1d3505a5efeeec65dfecbe4ee763ece09
data/README.md CHANGED
@@ -49,13 +49,13 @@ LITESTREAM_INSTALL_DIR=.bin
49
49
 
50
50
  You configure the Litestream executable through the [`config/litestream.yml` file](https://litestream.io/reference/config/), which is a standard Litestream configuration file as if Litestream was running in a traditional installation.
51
51
 
52
- The gem streamlines the configuration process by providing a default configuration file for you. This configuration file will backup one application database to one replication bucket. In order to ensure that no secrets are stored in plain-text in your repository, this configuration file leverages Litestream's support for environment variables. The default configuration file looks like this:
52
+ The gem streamlines the configuration process by providing a default configuration file for you. This configuration file will backup all SQLite databases defined in your `config/database.yml` file to one replication bucket. In order to ensure that no secrets are stored in plain-text in your repository, this configuration file leverages Litestream's support for environment variables. The default configuration file looks like this if you only have one SQLite database:
53
53
 
54
54
  ```yaml
55
55
  dbs:
56
56
  - path: $LITESTREAM_DATABASE_PATH
57
57
  replicas:
58
- - url: $LITESTREAM_REPLICA_URL
58
+ - url: $LITESTREAM_REPLICA_BUCKET
59
59
  access-key-id: $LITESTREAM_ACCESS_KEY_ID
60
60
  secret-access-key: $LITESTREAM_SECRET_ACCESS_KEY
61
61
  ```
@@ -66,7 +66,7 @@ The gem also provides a default initializer file at `config/initializers/litestr
66
66
  litestream_credentials = Rails.application.credentials.litestream
67
67
  Litestream.configure do |config|
68
68
  config.database_path = ActiveRecord::Base.connection_db_config.database
69
- config.replica_url = litestream_credentials.replica_url
69
+ config.replica_bucket = litestream_credentials.replica_bucket
70
70
  config.replica_key_id = litestream_credentials.replica_key_id
71
71
  config.replica_access_key = litestream_credentials.replica_access_key
72
72
  end
@@ -113,7 +113,7 @@ Once you have a MinIO server running, you can create a bucket for Litestream to
113
113
  ```ruby
114
114
  Litestream.configure do |config|
115
115
  config.database_path = ActiveRecord::Base.connection_db_config.database
116
- config.replica_url = "s3://mybkt.localhost:9000/"
116
+ config.replica_bucket = "s3://mybkt.localhost:9000/"
117
117
  config.replica_key_id = "minioadmin"
118
118
  config.replica_access_key = "minioadmin"
119
119
  end
@@ -74,8 +74,7 @@ module Litestream
74
74
 
75
75
  def self.replicate(argv = {})
76
76
  if Litestream.configuration
77
- ENV["LITESTREAM_DATABASE_PATH"] = Litestream.configuration.database_path
78
- ENV["LITESTREAM_REPLICA_URL"] = Litestream.configuration.replica_url
77
+ ENV["LITESTREAM_REPLICA_BUCKET"] = Litestream.configuration.replica_bucket
79
78
  ENV["LITESTREAM_ACCESS_KEY_ID"] = Litestream.configuration.replica_key_id
80
79
  ENV["LITESTREAM_SECRET_ACCESS_KEY"] = Litestream.configuration.replica_access_key
81
80
  end
@@ -8,7 +8,7 @@ module Litestream
8
8
  source_root File.expand_path("templates", __dir__)
9
9
 
10
10
  def copy_config_file
11
- template "config.yml", "config/litestream.yml"
11
+ template "config.yml.erb", "config/litestream.yml"
12
12
  end
13
13
 
14
14
  def copy_initializer_file
@@ -27,6 +27,16 @@ module Litestream
27
27
  end
28
28
  end
29
29
  end
30
+
31
+ private
32
+
33
+ def production_sqlite_databases
34
+ ActiveRecord::Base
35
+ .configurations
36
+ .configs_for(env_name: "production", include_hidden: true)
37
+ .select { |config| ["sqlite3", "litedb"].include? config.adapter }
38
+ .map(&:database)
39
+ end
30
40
  end
31
41
  end
32
42
  end
@@ -10,8 +10,12 @@
10
10
  #
11
11
  # For more details, see: https://litestream.io/reference/config/
12
12
  dbs:
13
- - path: $LITESTREAM_DATABASE_PATH
13
+ <%- production_sqlite_databases.each do |database| -%>
14
+ - path: <%= database %>
14
15
  replicas:
15
- - url: $LITESTREAM_REPLICA_URL
16
+ - type: s3
17
+ bucket: $LITESTREAM_REPLICA_BUCKET
18
+ path: <%= database %>
16
19
  access-key-id: $LITESTREAM_ACCESS_KEY_ID
17
20
  secret-access-key: $LITESTREAM_SECRET_ACCESS_KEY
21
+ <%- end -%>
@@ -1,30 +1,25 @@
1
1
  # Use this hook to configure the litestream-ruby gem.
2
2
  # All configuration options will be available as environment variables, e.g.
3
- # config.database_path becomes LITESTREAM_DATABASE_PATH
3
+ # config.replica_bucket becomes LITESTREAM_REPLICA_BUCKET
4
4
  # This allows you to configure Litestream using Rails encrypted credentials,
5
5
  # or some other mechanism where the values are only avaialble at runtime.
6
6
 
7
7
  Litestream.configure do |config|
8
8
  # An example of using Rails encrypted credentials to configure Litestream.
9
9
  # litestream_credentials = Rails.application.credentials.litestream
10
- #
11
- # The absolute or relative path to a SQLite database file.
12
- # Litestream will monitor this file for changes and replicate them to the
13
- # any of the configured replicas specified for this database in the
14
- # `litestream.yml` configuration file.
15
- # When using SQLite as your database engine for ActiveRecord, you should always
16
- # set this to the path of your SQLite database file. You can do so using Rails'
17
- # existing knowledge of the database path.
18
- # config.database_path = ActiveRecord::Base.connection_db_config.database
19
10
 
20
- # Short-hand form of specifying a replica location.
21
- # When using S3, a value will look like "s3://mybkt.litestream.io/db"
22
- # Litestream also supports Azure Blog Storage, Backblaze B2, DigitalOcean Spaces,
11
+ # Replica-specific bucket location.
12
+ # This will be your bucket's URL without the `https://` prefix.
13
+ # For example, if you used DigitalOcean Spaces, your bucket URL could look like:
14
+ # https://myapp.fra1.digitaloceanspaces.com
15
+ # And so you should set your `replica_bucket` to:
16
+ # myapp.fra1.digitaloceanspaces.com
17
+ # Litestream supports Azure Blog Storage, Backblaze B2, DigitalOcean Spaces,
23
18
  # Scaleway Object Storage, Google Cloud Storage, Linode Object Storage, and
24
19
  # any SFTP server.
25
20
  # In this example, we are using Rails encrypted credentials to store the URL to
26
21
  # our storage provider bucket.
27
- # config.replica_url = litestream_credentials.replica_url
22
+ # config.replica_bucket = litestream_credentials.replica_bucket
28
23
 
29
24
  # Replica-specific authentication key.
30
25
  # Litestream needs authentication credentials to access your storage provider bucket.
@@ -1,3 +1,3 @@
1
1
  module Litestream
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/litestream.rb CHANGED
@@ -11,7 +11,7 @@ module Litestream
11
11
  end
12
12
 
13
13
  class Configuration
14
- attr_accessor :database_path, :replica_url, :replica_key_id, :replica_access_key
14
+ attr_accessor :database_path, :replica_bucket, :replica_key_id, :replica_access_key
15
15
 
16
16
  def initialize
17
17
  @mailer_sender = "donotreply@example.com"
@@ -6,8 +6,7 @@ namespace :litestream do
6
6
  next
7
7
  end
8
8
 
9
- puts "LITESTREAM_DATABASE_PATH=#{Litestream.configuration.database_path}"
10
- puts "LITESTREAM_REPLICA_URL=#{Litestream.configuration.replica_url}"
9
+ puts "LITESTREAM_REPLICA_BUCKET=#{Litestream.configuration.replica_bucket}"
11
10
  puts "LITESTREAM_ACCESS_KEY_ID=#{Litestream.configuration.replica_key_id}"
12
11
  puts "LITESTREAM_SECRET_ACCESS_KEY=#{Litestream.configuration.replica_access_key}"
13
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: litestream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Margheim
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-06 00:00:00.000000000 Z
11
+ date: 2024-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -67,7 +67,7 @@ files:
67
67
  - lib/litestream.rb
68
68
  - lib/litestream/commands.rb
69
69
  - lib/litestream/generators/litestream/install_generator.rb
70
- - lib/litestream/generators/litestream/templates/config.yml
70
+ - lib/litestream/generators/litestream/templates/config.yml.erb
71
71
  - lib/litestream/generators/litestream/templates/initializer.rb
72
72
  - lib/litestream/railtie.rb
73
73
  - lib/litestream/upstream.rb