Add rails-settings-cached, use for initial feature flags
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Râu Cao 2023-02-17 17:07:42 +08:00
parent 7280a4c023
commit cd7b05e2ff
Signed by: raucao
GPG Key ID: 15E65F399D084BA9
7 changed files with 38 additions and 3 deletions

View File

@ -38,6 +38,7 @@ gem 'net-ldap'
# Utilities # Utilities
gem "rqrcode", "~> 2.0" gem "rqrcode", "~> 2.0"
gem 'rails-settings-cached', '~> 2.8.3'
# HTTP requests # HTTP requests
gem 'faraday' gem 'faraday'

View File

@ -206,6 +206,9 @@ GEM
nokogiri (>= 1.6) nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3) rails-html-sanitizer (1.4.3)
loofah (~> 2.3) loofah (~> 2.3)
rails-settings-cached (2.8.3)
activerecord (>= 5.0.0)
railties (>= 5.0.0)
railties (7.0.4) railties (7.0.4)
actionpack (= 7.0.4) actionpack (= 7.0.4)
activesupport (= 7.0.4) activesupport (= 7.0.4)
@ -327,6 +330,7 @@ DEPENDENCIES
pg (~> 1.2.3) pg (~> 1.2.3)
puma (~> 4.1) puma (~> 4.1)
rails (~> 7.0.2) rails (~> 7.0.2)
rails-settings-cached (~> 2.8.3)
rqrcode (~> 2.0) rqrcode (~> 2.0)
rspec-rails rspec-rails
sidekiq (< 7) sidekiq (< 7)

View File

@ -13,7 +13,7 @@ class Admin::LightningController < Admin::BaseController
end end
def check_feature_enabled def check_feature_enabled
if ENV["LNDHUB_ADMIN_UI"].empty? if !Setting.lndhub_admin_enabled?
flash[:alert] = "Lightning Admin UI not enabled" flash[:alert] = "Lightning Admin UI not enabled"
redirect_to admin_root_path and return redirect_to admin_root_path and return
end end

7
app/models/setting.rb Normal file
View File

@ -0,0 +1,7 @@
# RailsSettings Model
class Setting < RailsSettings::Base
cache_prefix { "v1" }
field :lndhub_enabled, default: (ENV["LNDHUB_API_URL"].present?.to_s || "false"), type: :boolean
field :lndhub_admin_enabled, default: (ENV["LNDHUB_ADMIN_UI"] || "false"), type: :boolean
end

View File

@ -6,7 +6,7 @@
class: main_nav_class(@current_section, :invitations) %> class: main_nav_class(@current_section, :invitations) %>
<%= link_to "Donations", admin_donations_path, <%= link_to "Donations", admin_donations_path,
class: main_nav_class(@current_section, :donations) %> class: main_nav_class(@current_section, :donations) %>
<% if ENV["LNDHUB_ADMIN_UI"] %> <% if Setting.lndhub_admin_enabled? %>
<%= link_to "Lightning", admin_lightning_path, <%= link_to "Lightning", admin_lightning_path,
class: main_nav_class(@current_section, :lightning) %> class: main_nav_class(@current_section, :lightning) %>
<% end %> <% end %>

View File

@ -0,0 +1,15 @@
class CreateSettings < ActiveRecord::Migration[7.0]
def self.up
create_table :settings do |t|
t.string :var, null: false
t.text :value, null: true
t.timestamps
end
add_index :settings, %i(var), unique: true
end
def self.down
drop_table :settings
end
end

View File

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_01_11_113139) do ActiveRecord::Schema[7.0].define(version: 2023_02_17_084310) do
create_table "donations", force: :cascade do |t| create_table "donations", force: :cascade do |t|
t.integer "user_id" t.integer "user_id"
t.integer "amount_sats" t.integer "amount_sats"
@ -34,6 +34,14 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_11_113139) do
t.index ["user_id"], name: "index_invitations_on_user_id" t.index ["user_id"], name: "index_invitations_on_user_id"
end end
create_table "settings", force: :cascade do |t|
t.string "var", null: false
t.text "value"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["var"], name: "index_settings_on_var", unique: true
end
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "cn" t.string "cn"
t.string "ou" t.string "ou"