lux-fw 0.1.17 → 0.1.35
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 +4 -4
- data/.version +1 -1
- data/bin/cli/am +38 -29
- data/bin/cli/assets +8 -4
- data/bin/cli/exceptions +6 -6
- data/bin/cli/generate +0 -0
- data/bin/cli/get +0 -0
- data/bin/cli/nginx +11 -5
- data/bin/cli/routes +0 -0
- data/bin/cli/systemd +36 -0
- data/bin/forever +0 -0
- data/bin/job_que +0 -0
- data/bin/lux +1 -0
- data/lib/common/base32.rb +0 -0
- data/lib/common/class_attributes.rb +13 -4
- data/lib/common/crypt.rb +6 -10
- data/lib/common/dynamic_class.rb +23 -0
- data/lib/common/generic_model.rb +0 -0
- data/lib/common/hash_with_indifferent_access.rb +352 -0
- data/lib/common/method_attr.rb +69 -0
- data/lib/lux/api/api.rb +26 -27
- data/lib/lux/api/lib/application_api.rb +26 -7
- data/lib/lux/api/lib/doc_builder.rb +18 -17
- data/lib/lux/api/lib/dsl.rb +23 -41
- data/lib/lux/api/lib/error.rb +3 -0
- data/lib/lux/api/lib/model_api.rb +22 -20
- data/lib/lux/api/lib/rescue.rb +5 -15
- data/lib/lux/api/lib/response.rb +46 -0
- data/lib/lux/cache/cache.rb +13 -6
- data/lib/lux/cell/cell.rb +3 -14
- data/lib/lux/config/config.rb +4 -3
- data/lib/lux/controller/controller.rb +3 -3
- data/lib/lux/controller/lib/nav.rb +6 -2
- data/lib/lux/error/error.rb +15 -14
- data/lib/lux/helper/helper.rb +5 -5
- data/lib/lux/helper/lib/html_tag.rb +67 -0
- data/lib/lux/html/lib/input_types.rb +26 -16
- data/lib/lux/lib/lux.rb +51 -0
- data/lib/lux/lux.rb +5 -52
- data/lib/lux/page/lib/response.rb +178 -0
- data/lib/lux/page/page.rb +72 -51
- data/lib/lux/rescue_from/rescue_from.rb +8 -6
- data/lib/lux/template/template.rb +1 -0
- data/lib/lux-fw.rb +2 -0
- data/lib/overload/array.rb +4 -0
- data/lib/overload/date.rb +2 -0
- data/lib/overload/hash.rb +19 -10
- data/lib/overload/it.rb +29 -0
- data/lib/overload/object.rb +3 -19
- data/lib/overload/r.rb +53 -0
- data/lib/overload/string.rb +5 -6
- data/lib/overload/string_inflections.rb +4 -3
- data/lib/plugins/assets/assets_plug.rb +9 -4
- data/lib/plugins/assets/helper_module_adapter.rb +4 -2
- data/lib/plugins/db_helpers/link_plugin.rb +2 -2
- data/lib/plugins/db_logger/init.rb +1 -1
- data/lib/vendor/mini_assets/lib/asset/css.rb +19 -0
- data/lib/vendor/mini_assets/lib/asset/js.rb +17 -0
- data/lib/vendor/mini_assets/lib/asset.rb +71 -0
- data/lib/vendor/mini_assets/lib/base/javascript.rb +13 -0
- data/lib/vendor/mini_assets/lib/base/stylesheet.rb +5 -0
- data/lib/vendor/mini_assets/lib/base.rb +69 -0
- data/lib/vendor/mini_assets/lib/manifest.rb +18 -0
- data/lib/vendor/mini_assets/lib/opts.rb +16 -0
- data/lib/vendor/mini_assets/mini_assets.rb +74 -0
- metadata +23 -10
- data/lib/common/class_method_params.rb +0 -94
- data/lib/overload/hash_wia.rb +0 -282
- data/lib/overload/inflections.rb +0 -199
- data/lib/vendor/mini_assets/mini_asset/base.rb +0 -167
- data/lib/vendor/mini_assets/mini_asset/css.rb +0 -38
- data/lib/vendor/mini_assets/mini_asset/js.rb +0 -38
- data/lib/vendor/mini_assets/mini_asset.rb +0 -31
data/lib/overload/r.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
class LocalRaiseError < StandardError
|
2
|
+
end
|
3
|
+
|
4
|
+
class Object
|
5
|
+
# raise object
|
6
|
+
def r what
|
7
|
+
opath = what.class.ancestors
|
8
|
+
out = opath.join("\n> ")
|
9
|
+
|
10
|
+
data = what.is_a?(Hash) ? JSON.pretty_generate(what) : what.ai(plain:true)
|
11
|
+
out = [data, out, ''].join("\n\n-\n\n")
|
12
|
+
|
13
|
+
# unique_methods = what.methods - what.class.ancestors[0].instance_methods
|
14
|
+
# raise unique_methods
|
15
|
+
|
16
|
+
raise LocalRaiseError.new out
|
17
|
+
end
|
18
|
+
|
19
|
+
# better console log dump
|
20
|
+
def rr what
|
21
|
+
ap ['--- START (%s) ---' % what.class, what, '--- END ---']
|
22
|
+
end
|
23
|
+
|
24
|
+
# unique methods for object
|
25
|
+
# includes methods from modules
|
26
|
+
def rm object
|
27
|
+
dump = []
|
28
|
+
|
29
|
+
dump.push ['Class', object.class]
|
30
|
+
|
31
|
+
instance_unique = object.methods - object.class.ancestors[0].instance_methods
|
32
|
+
class_unique = object.methods
|
33
|
+
|
34
|
+
object.class.ancestors.drop(1).each do |_|
|
35
|
+
class_unique -= _.instance_methods
|
36
|
+
|
37
|
+
if _.class != Module
|
38
|
+
dump.push ['Parent Class', _]
|
39
|
+
break
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
dump.push ['Instance uniqe', instance_unique.sort] if instance_unique[0]
|
44
|
+
dump.push ['Uniqe from parent', class_unique.sort]
|
45
|
+
dump.push ['Uniqe from parent simple', object.class.instance_methods(false)]
|
46
|
+
|
47
|
+
r dump
|
48
|
+
end
|
49
|
+
|
50
|
+
def instance_variables_hash
|
51
|
+
Hash[instance_variables.map { |name| [name, instance_variable_get(name)] } ]
|
52
|
+
end
|
53
|
+
end
|
data/lib/overload/string.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
class String
|
2
2
|
# simple markdown
|
3
3
|
def as_html
|
4
|
-
|
5
|
-
ret = ret.gsub(/([\w\.])\n(\w)/,"\\1<br/>\\2")
|
6
|
-
ret
|
4
|
+
self.gsub($/, '<br />')
|
7
5
|
end
|
8
6
|
|
9
7
|
# convert escaped strings, remove scritpts
|
@@ -46,10 +44,11 @@ class String
|
|
46
44
|
end
|
47
45
|
|
48
46
|
def to_url
|
49
|
-
|
50
|
-
|
47
|
+
str_from = 'šđč枊ĐČĆŽäÄéeöÖüüÜß'
|
48
|
+
str_to = 'sdcczSDCCZaAeeoOuuUs'
|
49
|
+
str = self.downcase.gsub(/\s+/,'-').tr(str_from, str_to)
|
51
50
|
# self.downcase.gsub(/\s+/,'-').tr(str_from, str_to).gsub(/[^\w\-]/,'')
|
52
|
-
|
51
|
+
str.sub(/\.$/, '').gsub('&',' and ').gsub('.',' dot ').parameterize.gsub('-dot-','.').downcase[0, 50].sub(/[\.\-]$/,'')
|
53
52
|
end
|
54
53
|
|
55
54
|
def css_to_hash
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# http://sequel.jeremyevans.net/rdoc/classes/Sequel/Inflections.html
|
2
2
|
|
3
3
|
String.inflections do |inflect|
|
4
|
-
inflect.plural
|
5
|
-
inflect.plural
|
6
|
-
inflect.plural
|
4
|
+
inflect.plural 'bonus', 'bonuses'
|
5
|
+
inflect.plural 'clothing', 'clothes'
|
6
|
+
inflect.plural 'people', 'people'
|
7
|
+
inflect.singular /news$/, 'news'
|
7
8
|
end
|
@@ -5,17 +5,22 @@ class Lux::Controller
|
|
5
5
|
def lux_assets_plug
|
6
6
|
|
7
7
|
# only allow clear in dev
|
8
|
+
# clear assets every 4 seconds max
|
8
9
|
if Lux.page.no_cache?
|
9
|
-
|
10
|
-
|
10
|
+
Lux.cache.fetch('lux-clear-assets', ttl: 4, log: false, force: false) do
|
11
|
+
puts '* Clearing assets from ./tmp/assets'.yellow
|
12
|
+
`rm -rf ./tmp/assets && mkdir ./tmp/assets`
|
13
|
+
true
|
14
|
+
end
|
11
15
|
end
|
12
16
|
|
13
17
|
path = nav.path.join('/')
|
14
18
|
|
15
19
|
if nav.root == 'compiled_asset'
|
16
|
-
asset =
|
20
|
+
asset = MiniAssets::Asset.call(path)
|
17
21
|
page.content_type asset.content_type
|
18
|
-
page.body asset.
|
22
|
+
page.body asset.render
|
23
|
+
|
19
24
|
elsif nav.root == 'raw_asset'
|
20
25
|
Lux.error "You can watch raw files only in development" unless Lux.dev?
|
21
26
|
|
@@ -32,14 +32,16 @@ module DefaultHelper
|
|
32
32
|
|
33
33
|
# return asset link in production or faile unless able
|
34
34
|
unless Lux.config(:compile_assets)
|
35
|
-
|
35
|
+
@@__asset_menifest ||= MiniAssets::Manifest.new
|
36
|
+
mfile = @@__asset_menifest.get(file)
|
36
37
|
raise 'Compiled asset link for "%s" not found in manifest.json' % file if mfile.empty?
|
37
38
|
return asset_include Lux.config.assets_root.to_s + mfile
|
38
39
|
end
|
39
40
|
|
40
41
|
# try to create list of incuded files and show every one of them
|
41
42
|
data = []
|
42
|
-
asset =
|
43
|
+
asset = MiniAssets.new file
|
44
|
+
|
43
45
|
for file in asset.files
|
44
46
|
data.push asset_include file
|
45
47
|
end
|
@@ -19,7 +19,7 @@ module Sequel::Plugins::LuxLink
|
|
19
19
|
# link :genders, collection: { 1=>'male', 2=>'Female' }
|
20
20
|
# Object.genders
|
21
21
|
# @object.gender
|
22
|
-
def link
|
22
|
+
def link name, opts={}
|
23
23
|
name_s = name.to_s.singularize
|
24
24
|
name_p = name.to_s.pluralize
|
25
25
|
|
@@ -64,7 +64,7 @@ module Sequel::Plugins::LuxLink
|
|
64
64
|
# puts "* #{to_s}.link :#{name} -> inline #{name_s}_ids".yellow
|
65
65
|
class_eval %[
|
66
66
|
def #{name_p}
|
67
|
-
return
|
67
|
+
return if #{name_s}_ids.blank?
|
68
68
|
ids = #{name_s}_ids.join(',')
|
69
69
|
#{klass}.where(Sequel.lit('id in ('+ids+')'))
|
70
70
|
end
|
@@ -10,7 +10,7 @@ logger.formatter = proc { |severity, datetime, progname, msg|
|
|
10
10
|
Thread.current[:db_q][:cnt] += 1
|
11
11
|
|
12
12
|
# append debug=true as query-string to see database queries
|
13
|
-
Lux.log(" #{Thread.current[:db_q][:cnt].to_s.rjust(2)}. #{time} : #{elms[2].cyan}\n") if Thread.current[:db_q]
|
13
|
+
Lux.log(" #{Thread.current[:db_q][:cnt].to_s.rjust(2)}. #{time} : #{elms[2].to_s.cyan}\n") if Thread.current[:db_q]
|
14
14
|
end
|
15
15
|
}
|
16
16
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class MiniAssets::Asset::Css < MiniAssets::Asset
|
2
|
+
def content_type
|
3
|
+
'text/css'
|
4
|
+
end
|
5
|
+
|
6
|
+
def environment_prefix?
|
7
|
+
true
|
8
|
+
end
|
9
|
+
|
10
|
+
def compile_scss
|
11
|
+
compile_sass
|
12
|
+
end
|
13
|
+
|
14
|
+
def compile_sass
|
15
|
+
node_sass = './node_modules/node-sass/bin/node-sass'
|
16
|
+
node_opts = opts.production? ? '--output-style compressed' : '--source-comments'
|
17
|
+
run! "#{node_sass} #{node_opts} '#{@source}' '#{@cache}'"
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class MiniAssets::Asset::Js < MiniAssets::Asset
|
2
|
+
def content_type
|
3
|
+
'text/javascript'
|
4
|
+
end
|
5
|
+
|
6
|
+
def compile_coffee
|
7
|
+
coffee_path = './node_modules/coffee-script/bin/coffee'
|
8
|
+
coffee_opts = opts.production? ? '-cp' : '-Mcp --no-header'
|
9
|
+
|
10
|
+
run! "#{coffee_path} #{coffee_opts} '#{@source}' > '#{@cache}'"
|
11
|
+
|
12
|
+
data = @cache.read
|
13
|
+
data = data.gsub(%r{//#\ssourceURL=[\w\-\.\/]+/app/assets/}, '//# sourceURL=/raw_asset/')
|
14
|
+
|
15
|
+
@cache.write data
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class MiniAssets::Asset
|
2
|
+
def self.call source
|
3
|
+
ext = source.split('.').last
|
4
|
+
base = ['css', 'sass', 'scss'].include?(ext) ? MiniAssets::Asset::Css : MiniAssets::Asset::Js
|
5
|
+
base.new source
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize source
|
9
|
+
@ext = source.split('.').last.to_sym
|
10
|
+
@source = opts.app_root.join source
|
11
|
+
@target = opts.public_root.join source
|
12
|
+
|
13
|
+
cache_file = source.gsub('/', '-')
|
14
|
+
|
15
|
+
if environment_prefix?
|
16
|
+
prefix = opts.production? ? :p : :d
|
17
|
+
cache_file = '%s-%s' % [prefix, cache_file]
|
18
|
+
end
|
19
|
+
|
20
|
+
@cache = opts.tmp_root.join cache_file
|
21
|
+
end
|
22
|
+
|
23
|
+
def opts
|
24
|
+
MiniAssets::Opts
|
25
|
+
end
|
26
|
+
|
27
|
+
def environment_prefix?
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
def run! what
|
32
|
+
puts what.yellow
|
33
|
+
|
34
|
+
stdin, stdout, stderr, wait_thread = Open3.popen3(what)
|
35
|
+
|
36
|
+
error = stderr.gets
|
37
|
+
while line = stderr.gets do
|
38
|
+
error += line
|
39
|
+
end
|
40
|
+
|
41
|
+
# node-sass prints to stderror on complete
|
42
|
+
error = nil if error && error.index('Rendering Complete, saving .css file...')
|
43
|
+
|
44
|
+
if error
|
45
|
+
@cache.unlink if @cache.exist?
|
46
|
+
@error = error
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def comment text
|
51
|
+
'/* %s */' % text
|
52
|
+
end
|
53
|
+
|
54
|
+
def cached?
|
55
|
+
@cache.exist? && @cache.ctime > @source.ctime
|
56
|
+
end
|
57
|
+
|
58
|
+
def render
|
59
|
+
func = 'compile_%s' % @ext
|
60
|
+
|
61
|
+
# if custom method exists, execute it and return cache
|
62
|
+
# othervise just read source
|
63
|
+
if respond_to?(func)
|
64
|
+
send func unless cached?
|
65
|
+
@cache.read
|
66
|
+
else
|
67
|
+
@source.read
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class MiniAssets::Base::JavaScript < MiniAssets::Base
|
2
|
+
def asset_class
|
3
|
+
MiniAssets::Asset::Js
|
4
|
+
end
|
5
|
+
|
6
|
+
def join_string
|
7
|
+
";\n"
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_production
|
11
|
+
run! './node_modules/minifier/index.js --no-comments -o "%{file}" "%{file}"' % { file: @target }
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# base class for production rendering
|
2
|
+
# MiniAssets.call('js/main/index.coffee').render
|
3
|
+
# MiniAssets::Base::JavasScript.new sorurce, files
|
4
|
+
|
5
|
+
class MiniAssets::Base
|
6
|
+
attr_reader :files
|
7
|
+
|
8
|
+
def initialize source, files
|
9
|
+
@source = source
|
10
|
+
@files = files
|
11
|
+
end
|
12
|
+
|
13
|
+
def join_string
|
14
|
+
"\n"
|
15
|
+
end
|
16
|
+
|
17
|
+
def render_production
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def gzip
|
22
|
+
run! 'gzip -k %s' % @target
|
23
|
+
end
|
24
|
+
|
25
|
+
def run! what
|
26
|
+
puts what.yellow
|
27
|
+
system what
|
28
|
+
end
|
29
|
+
|
30
|
+
def opts
|
31
|
+
MiniAssets::Opts
|
32
|
+
end
|
33
|
+
|
34
|
+
# this should only be called in builder for production "lux assets"
|
35
|
+
def render
|
36
|
+
data = []
|
37
|
+
|
38
|
+
@files.each do |file|
|
39
|
+
asset = asset_class.new file
|
40
|
+
data.push asset.comment 'Source: %s' % file unless opts.production?
|
41
|
+
data.push asset.render
|
42
|
+
end
|
43
|
+
|
44
|
+
data = data.join(join_string)
|
45
|
+
type = asset_class.to_s.split('::').last.downcase
|
46
|
+
|
47
|
+
@target = opts.public_root.join '%s-%s.%s' % [@source.to_s.gsub(/[^\w]+/,'-'), Digest::SHA1.hexdigest(data), type]
|
48
|
+
|
49
|
+
# unless target exists, build it and minify it
|
50
|
+
unless @target.exist?
|
51
|
+
@target.write data
|
52
|
+
|
53
|
+
render_production
|
54
|
+
gzip
|
55
|
+
|
56
|
+
# force old time stamp
|
57
|
+
run! 'touch -t 201001010101 %s' % @target
|
58
|
+
run! 'touch -t 201001010101 %s.gz' % @target
|
59
|
+
end
|
60
|
+
|
61
|
+
# update manifest (if needed)
|
62
|
+
target = @target.to_s.split('/public').last
|
63
|
+
manifest = MiniAssets::Manifest.new
|
64
|
+
manifest.add @source, target
|
65
|
+
|
66
|
+
target
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class MiniAssets::Manifest
|
2
|
+
def initialize
|
3
|
+
@manifest = MiniAssets::Opts.public_root.join('./manifest.json')
|
4
|
+
@manifest.write '{"files":{}}' unless @manifest.exist?
|
5
|
+
@json = JSON.load @manifest.read
|
6
|
+
end
|
7
|
+
|
8
|
+
def add name, target
|
9
|
+
return if @json['files'][name] == target
|
10
|
+
|
11
|
+
@json['files'][name] = target
|
12
|
+
@manifest.write JSON.pretty_generate(@json)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get file
|
16
|
+
@json['files'][file]
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module MiniAssets::Opts
|
2
|
+
extend self
|
3
|
+
|
4
|
+
[:app, :tmp, :public].each do |folder|
|
5
|
+
name = '%s_root' % folder
|
6
|
+
path = Pathname.new './%s/assets' % folder
|
7
|
+
|
8
|
+
Dir.mkdir(path) unless path.exist?
|
9
|
+
|
10
|
+
define_method(name) { path }
|
11
|
+
end
|
12
|
+
|
13
|
+
def production?
|
14
|
+
ENV['RACK_ENV'] == 'production'
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# app/assets/main/js.assets
|
2
|
+
# ---
|
3
|
+
# add 'js_vendor/*'
|
4
|
+
# add 'js/*'
|
5
|
+
# add 'index.coffee'
|
6
|
+
|
7
|
+
# render production asset
|
8
|
+
# ---
|
9
|
+
# MiniAssets.call('js/main/index.coffee').render
|
10
|
+
|
11
|
+
# render single asset
|
12
|
+
# ---
|
13
|
+
# asset = MiniAssets::Asset.call(path)
|
14
|
+
# asset.content_type
|
15
|
+
# asset.render
|
16
|
+
|
17
|
+
require 'json'
|
18
|
+
require 'pathname'
|
19
|
+
require 'awesome_print'
|
20
|
+
require 'open3'
|
21
|
+
require 'digest'
|
22
|
+
|
23
|
+
# calls base classes
|
24
|
+
class MiniAssets
|
25
|
+
attr_reader :files
|
26
|
+
|
27
|
+
def initialize source
|
28
|
+
@files = []
|
29
|
+
@fsource = source
|
30
|
+
|
31
|
+
@source = MiniAssets::Opts.app_root.join source
|
32
|
+
|
33
|
+
# fill @files, via dsl or direct
|
34
|
+
if source.split('.').last == 'assets'
|
35
|
+
# add './js/*'
|
36
|
+
eval @source.read
|
37
|
+
else
|
38
|
+
@source.read.split($/).each do |line|
|
39
|
+
test = line.split(/^[\/#]+=\s*req\w*\s+/)
|
40
|
+
add test[1] if test[1]
|
41
|
+
end
|
42
|
+
|
43
|
+
@files.push source
|
44
|
+
end
|
45
|
+
|
46
|
+
# figure out type unless defined
|
47
|
+
unless @type
|
48
|
+
ext = @files.first.split('.').last
|
49
|
+
@type = ['css', 'sass', 'scss'].include?(ext) ? :css : :js
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def type name
|
54
|
+
@type = name
|
55
|
+
end
|
56
|
+
|
57
|
+
def add files
|
58
|
+
files = files.sub(/^\.\//,'')
|
59
|
+
files += '/*' unless files.include?('*')
|
60
|
+
path = @source.dirname.join files
|
61
|
+
|
62
|
+
@files += Dir[path].sort.map{ |f| f.split(MiniAssets::Opts.app_root.to_s+'/', 2).last }
|
63
|
+
end
|
64
|
+
|
65
|
+
# render production file
|
66
|
+
def render
|
67
|
+
# load right base class
|
68
|
+
base_class = @type == :css ?
|
69
|
+
MiniAssets::Base::StyleSheet
|
70
|
+
: MiniAssets::Base::JavaScript
|
71
|
+
|
72
|
+
base_class.new(@fsource, @files).render
|
73
|
+
end
|
74
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lux-fw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.35
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dino Reic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- "./bin/cli/routes"
|
214
214
|
- "./bin/cli/server"
|
215
215
|
- "./bin/cli/stat"
|
216
|
+
- "./bin/cli/systemd"
|
216
217
|
- "./bin/forever"
|
217
218
|
- "./bin/job_que"
|
218
219
|
- "./bin/lux"
|
@@ -221,10 +222,12 @@ files:
|
|
221
222
|
- "./lib/common/base32.rb"
|
222
223
|
- "./lib/common/before_and_after.rb"
|
223
224
|
- "./lib/common/class_attributes.rb"
|
224
|
-
- "./lib/common/class_method_params.rb"
|
225
225
|
- "./lib/common/crypt.rb"
|
226
|
+
- "./lib/common/dynamic_class.rb"
|
226
227
|
- "./lib/common/folder_model.rb"
|
227
228
|
- "./lib/common/generic_model.rb"
|
229
|
+
- "./lib/common/hash_with_indifferent_access.rb"
|
230
|
+
- "./lib/common/method_attr.rb"
|
228
231
|
- "./lib/common/policy.rb"
|
229
232
|
- "./lib/common/string_base.rb"
|
230
233
|
- "./lib/common/url.rb"
|
@@ -233,8 +236,10 @@ files:
|
|
233
236
|
- "./lib/lux/api/lib/application_api.rb"
|
234
237
|
- "./lib/lux/api/lib/doc_builder.rb"
|
235
238
|
- "./lib/lux/api/lib/dsl.rb"
|
239
|
+
- "./lib/lux/api/lib/error.rb"
|
236
240
|
- "./lib/lux/api/lib/model_api.rb"
|
237
241
|
- "./lib/lux/api/lib/rescue.rb"
|
242
|
+
- "./lib/lux/api/lib/response.rb"
|
238
243
|
- "./lib/lux/cache/cache.rb"
|
239
244
|
- "./lib/lux/cache/lib/memcached.rb"
|
240
245
|
- "./lib/lux/cache/lib/null.rb"
|
@@ -251,14 +256,17 @@ files:
|
|
251
256
|
- "./lib/lux/delayed_job/lib/redis.rb"
|
252
257
|
- "./lib/lux/error/error.rb"
|
253
258
|
- "./lib/lux/helper/helper.rb"
|
259
|
+
- "./lib/lux/helper/lib/html_tag.rb"
|
254
260
|
- "./lib/lux/html/html.rb"
|
255
261
|
- "./lib/lux/html/lib/form.rb"
|
256
262
|
- "./lib/lux/html/lib/input.rb"
|
257
263
|
- "./lib/lux/html/lib/input_types.rb"
|
264
|
+
- "./lib/lux/lib/lux.rb"
|
258
265
|
- "./lib/lux/lux.rb"
|
259
266
|
- "./lib/lux/mailer/mailer.rb"
|
260
267
|
- "./lib/lux/page/lib/encrypt_params.rb"
|
261
268
|
- "./lib/lux/page/lib/flash.rb"
|
269
|
+
- "./lib/lux/page/lib/response.rb"
|
262
270
|
- "./lib/lux/page/lib/static_file.rb"
|
263
271
|
- "./lib/lux/page/page.rb"
|
264
272
|
- "./lib/lux/rescue_from/rescue_from.rb"
|
@@ -268,12 +276,12 @@ files:
|
|
268
276
|
- "./lib/overload/date.rb"
|
269
277
|
- "./lib/overload/file.rb"
|
270
278
|
- "./lib/overload/hash.rb"
|
271
|
-
- "./lib/overload/hash_wia.rb"
|
272
|
-
- "./lib/overload/inflections.rb"
|
273
279
|
- "./lib/overload/integer.rb"
|
280
|
+
- "./lib/overload/it.rb"
|
274
281
|
- "./lib/overload/module.rb"
|
275
282
|
- "./lib/overload/nil.rb"
|
276
283
|
- "./lib/overload/object.rb"
|
284
|
+
- "./lib/overload/r.rb"
|
277
285
|
- "./lib/overload/string.rb"
|
278
286
|
- "./lib/overload/string_inflections.rb"
|
279
287
|
- "./lib/overload/struct.rb"
|
@@ -295,10 +303,15 @@ files:
|
|
295
303
|
- "./lib/plugins/db_logger/lux_response_adapter.rb"
|
296
304
|
- "./lib/plugins/paginate/helper.rb"
|
297
305
|
- "./lib/plugins/paginate/sequel_adapter.rb"
|
298
|
-
- "./lib/vendor/mini_assets/
|
299
|
-
- "./lib/vendor/mini_assets/
|
300
|
-
- "./lib/vendor/mini_assets/
|
301
|
-
- "./lib/vendor/mini_assets/
|
306
|
+
- "./lib/vendor/mini_assets/lib/asset.rb"
|
307
|
+
- "./lib/vendor/mini_assets/lib/asset/css.rb"
|
308
|
+
- "./lib/vendor/mini_assets/lib/asset/js.rb"
|
309
|
+
- "./lib/vendor/mini_assets/lib/base.rb"
|
310
|
+
- "./lib/vendor/mini_assets/lib/base/javascript.rb"
|
311
|
+
- "./lib/vendor/mini_assets/lib/base/stylesheet.rb"
|
312
|
+
- "./lib/vendor/mini_assets/lib/manifest.rb"
|
313
|
+
- "./lib/vendor/mini_assets/lib/opts.rb"
|
314
|
+
- "./lib/vendor/mini_assets/mini_assets.rb"
|
302
315
|
- "./lib/vendor/oauth/lib/facebook.rb"
|
303
316
|
- "./lib/vendor/oauth/lib/github.rb"
|
304
317
|
- "./lib/vendor/oauth/lib/google.rb"
|
@@ -327,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
340
|
version: '0'
|
328
341
|
requirements: []
|
329
342
|
rubyforge_project:
|
330
|
-
rubygems_version: 2.6.
|
343
|
+
rubygems_version: 2.6.14
|
331
344
|
signing_key:
|
332
345
|
specification_version: 4
|
333
346
|
summary: Lux - the ruby framework
|
@@ -1,94 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# allows adding of params to methods
|
4
|
-
# used in Lux::Api
|
5
|
-
#
|
6
|
-
# param :model_id, type: :integer
|
7
|
-
# param :age, max: 120
|
8
|
-
# def show
|
9
|
-
# end
|
10
|
-
|
11
|
-
# class ModelApi
|
12
|
-
# class << self
|
13
|
-
# def param *args
|
14
|
-
# ClassMethodParams.add_param self, args
|
15
|
-
# end
|
16
|
-
|
17
|
-
# def method_added(m)
|
18
|
-
# ClassMethodParams.add_method self, m
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
|
22
|
-
# ###
|
23
|
-
|
24
|
-
# param :id
|
25
|
-
# param :user_id, Integer
|
26
|
-
# param :model_id, type: :integer
|
27
|
-
# param :age, max: 120
|
28
|
-
# def show
|
29
|
-
|
30
|
-
# end
|
31
|
-
|
32
|
-
# end
|
33
|
-
|
34
|
-
# class UserApi < ModelApi
|
35
|
-
|
36
|
-
# param :name
|
37
|
-
# def edit
|
38
|
-
|
39
|
-
# end
|
40
|
-
|
41
|
-
# end
|
42
|
-
|
43
|
-
# ap ClassMethodParams.params
|
44
|
-
# ap ClassMethodParams.params UserApi, :show
|
45
|
-
# ap ClassMethodParams.all UserApi
|
46
|
-
|
47
|
-
module ClassMethodParams
|
48
|
-
extend self
|
49
|
-
|
50
|
-
@params = {}
|
51
|
-
@cache = {}
|
52
|
-
|
53
|
-
def add_param klass, param, args
|
54
|
-
@cache[klass.to_s] ||= {}
|
55
|
-
@cache[klass.to_s][param] ||= []
|
56
|
-
@cache[klass.to_s][param].push args
|
57
|
-
end
|
58
|
-
|
59
|
-
def add_method klass, m
|
60
|
-
k = klass.to_s
|
61
|
-
@params[k] ||= {}
|
62
|
-
@params[k][m] = @cache[k] ? @cache[k].dup : {}
|
63
|
-
@cache = {}
|
64
|
-
end
|
65
|
-
|
66
|
-
def all_params
|
67
|
-
@params
|
68
|
-
end
|
69
|
-
|
70
|
-
# return all params method in a class
|
71
|
-
def params klass, m
|
72
|
-
return @params unless m
|
73
|
-
|
74
|
-
klass.ancestors.map(&:to_s).each do |klass|
|
75
|
-
return if klass == 'Object'
|
76
|
-
data = @params[klass]
|
77
|
-
return data[m] if data && data[m]
|
78
|
-
end
|
79
|
-
|
80
|
-
nil
|
81
|
-
end
|
82
|
-
|
83
|
-
# return all methos and all parameters for all methods in a class
|
84
|
-
def all klass
|
85
|
-
data = {}
|
86
|
-
all_methods = klass.instance_methods - Object.instance_methods
|
87
|
-
all_methods.each do |m|
|
88
|
-
data[m] = ClassMethodParams.params(klass, m)
|
89
|
-
end
|
90
|
-
data
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|