ar-settings 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []