ar-settings 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 999ea6658bfd227a32f1e9d8456e0e41ebe68eeb
4
+ data.tar.gz: 2a48eebab71941d0f5f39ecf056a356e00e06482
5
+ SHA512:
6
+ metadata.gz: c5033a4c805a268538297d47861f05a226f09396e30cfe5f95f55368add7178d2e8cc2c14dee380bc33fc2472f469640e87b2302e960b1da5d5d06d66ad645e2
7
+ data.tar.gz: 33dc25c7c910df9bd9b77e687f93b2d01a012fe9beece50915409c4d72546d94d26dfe2b5d3bf7c991a192889ec017cb15228165e4a45987486790c395f0c360
@@ -0,0 +1,21 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class InstallSettingsGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ desc 'Generate migration for settings records'
8
+ source_root File.expand_path('templates', __dir__)
9
+
10
+ def create_migration_file
11
+ migration_template 'install.rb.erb', 'db/migrate/settings_migration.rb'
12
+ end
13
+
14
+ def self.next_migration_number(dirname)
15
+ if ActiveRecord::Base.timestamped_migrations
16
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
17
+ else
18
+ '%.3d' % (current_migration_number(dirname) + 1)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ class SettingsMigration < ActiveRecord::Migration[<%= "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}" %>]
2
+ def change
3
+ create_table :settings do |t|
4
+ t.string :key, null: false
5
+ t.text :value
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :settings, :key, unique: true
11
+ end
12
+ end
data/lib/settings.rb ADDED
@@ -0,0 +1,20 @@
1
+ class Settings < ActiveRecord::Base
2
+ def self.set(key, value)
3
+ record = where(key: key).first_or_initialize
4
+ record.value = value
5
+
6
+ record.save
7
+ end
8
+
9
+ def self.get(key)
10
+ where(key: key).pluck(:value).first
11
+ end
12
+
13
+ def self.has(key)
14
+ exists? key: key
15
+ end
16
+
17
+ def self.unset(key)
18
+ find_by(key: key)&.destroy
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ar-settings
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mladen Ilic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-03-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Store your application configuration in database as key/value pairs
14
+ email: mladen@drei.one
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/generators/install_settings_generator.rb
20
+ - lib/generators/templates/install.rb.erb
21
+ - lib/settings.rb
22
+ homepage: https://drei.one
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.5.2.3
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Simple global database stored application configuration
46
+ test_files: []