procemon ======== Gotta catch em all! This is a collection of my Ruby Procs in the adventure of becoming the best! This is including Tons of monkey_patch for new features to classes, meta-programing tricks, terminal argument controls, daemonise trick, tmp folder helpers, Application centralized datas, folder structure logic , meta data control, dynamic lib read etc short lazy doc in Str2duck convert string object to something what is it looks to be as duck type mean to do useful for RESTfull aps when data sent as string duck in Tmp_dir init a tmpdir in the OS tmp folder with the application name (by default this is the root folder name) tmpdir_init in Name what it looks to be set_app_name_by_root_folder in Argv what it looks to be process_parameters in Daemon Checks to see if the current process is the child process and if not will update the pid file with the child pid. self.start pid, pidfile, outfile, errfile Attempts to write the pid of the forked process to the pid file. self.write pid, pidfile Try and read the existing pid from the pid file and signal the process. Returns true for a non blocking status. self.kill(pidfile) Send stdout and stderr to log files for the child process self.redirect outfile, errfile self.daemonize self.kill_with_pid self.terminate self.kill_by_name(*args) self.stop self.init in Inject_methods this will inject a code block to a target instance method by default the before or after sym is not required default => before Test.inject_singleton_method :hello do |*args| puts "singleton extra, so{args[0]}" end inject_singleton_method(method,options=:before,&block) Singleton.methods[self.object_id]= self.method(method) this will inject a code block to a target singleton method by default the before or after sym is not required default => before Test.inject_instance_method :hello, :before do |*args| puts "singleton on a instance method and "+args[0] end inject_instance_method(method,options=:before,&block) in Require load meta-s meta_load(app_folder= Dir.pwd) find elements get_meta_config(app_folder= Dir.pwd) defaults find elements defaults processing return data mount libs mount_libs(app_folder= Dir.pwd) load lib files Offline repo activate mount_modules(app_folder= Dir.pwd) Return File_name => File_path get_files(folder) Validation Check that does the folder is absolute or not Get Files list Return file_name:folder require by absolute path directory's files require_directory(folder) require sender relative directory's files require_relative_directory(folder) generate config from yaml (default is app_root/config folder) generate_config(target_config_hash= Application.config,app_folder= Dir.pwd) try load all the ruby files marked with "generate" in they name from app_root/docs generate_documentation(boolean= false,keyword= "generate",app_folder= Dir.pwd) in Port get_port(mint_port,max_port,host="0.0.0.0") port_open?(port,host="0.0.0.0") in Eval NOT working yet, need to rework the exclude method safe_eval(string [, binding [, filename [,lineno]]] *allowed_class/module_names ) -> obj Evaluates the Ruby expression(s) in string. If binding is given, which must be a Binding object, the evaluation is performed in its context. If the optional filename and lineno parameters are present, they will be used when reporting syntax errors. def get_binding(str) return binding end str = "hello" safe_eval "str + ' Fred'" ,Kernel#=> "hello Fred" safe_eval "str + ' Fred'", get_binding("bye") ,Kernel#=> "bye Fred" safe_eval(*args) in Process self.daemonize self.stop in String Find string in othere string positions(oth_string) return value Standard in rails. See official documentation [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html] camelize(first_letter = :upper) Standard in rails. See official documentation [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html] dasherize Standard in rails. See official documentation [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html] demodulize Standard in rails. See official documentation [http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html] underscore Check that instance of String is start with an upper case or not capitalized? in Yml self.save_file(file_path,config_hash) self.load_file(file_path) in Object The hidden singleton lurks behind everyone metaclass; class << self; self; end; end extend the metaclass with an instance eval meta_eval &blk; metaclass.instance_eval &blk; end Adds methods to a metaclass meta_name, &blk Defines an instance method within a class class_name, &blk constantize object constantize find and replace object in object find_and_replace(input,*params) it was made only for fun to make same each to array and hash and everything each_universal(&block) map an object => experiment map_object(symbol_key="$type") is class? class? convert class instance instance variables into a hash object convert_to_hash this will check that the class is defined or not in the runtime memory class_exists? This will convert a symbol or string and format to be a valid constant name and create from it a class with instance attribute accessors Best use is when you get raw data in string from external source and you want make them class objects :hello_world.to_class(:test) HelloWorld.to_class(:sup) hw_var = HelloWorld.new hw_var.sup = "Fine thanks!" hw_var.test = 5 puts hw_var.test > produce 5 :Integer you can also use this formats :HelloWorld , "hello.world", "hello/world", "Hello::World", "hello:world"... to_class(*attributes) or create_attributes(*attributes) in File self.create(route_name ,filemod="w",string_data=String.new) in Array remove arguments or array of parameters from the main array trim(*args) return index of the target element index_of(target_element) remove n. element from the end and return a new object pinch n=1 remove n. element from the end and return the original object pinch! n=1 return boolean by other array all element included or not in the target array contain?(oth_array)#anothere array do safe transpose safe_transpose in Class get singleton methods to target class without super class methods class_methods bind a singleton method to a class object create_class_method(method,&block) create an instance method create_instance_method(method,&block) Iterates over all subclasses (direct and indirect) each_subclass Returns an Array of subclasses (direct and indirect) subclasses Returns an Array of direct subclasses direct_subclasses create singleton attribute class_attr_accessor(name) GET SET create class instance attribute instance_attr_accessor(name) in Integer because for i in integer/fixnum not working, here is a little patch each &block in Random string(length= 7,amount=1) integer(length= 3) boolean time from = Time.at(1114924812), to = Time.now date from = Time.at(1114924812), to = Time.now datetime from = Time.at(1114924812), to = Time.now in Hash remove elements by keys, array of keys, hashTags, strings trim(*args) pass single or array of keys, which will be removed, returning the remaining hash remove!(*keys) non-destructive version remove(*keys) Returns a new hash with +self+ and +other_hash+ merged recursively. h1 = {:x => {:y => [4,5,6]}, :z => [7,8,9]} h2 = {:x => {:y => [7,8,9]}, :z => "xyz"} # h1.deep_merge(h2#=> { :x => {:y => [7, 8, 9]}, :z => "xyz" } h2.deep_merge(h1#=> { :x => {:y => [4, 5, 6]}, :z => [7, 8, 9] } deep_merge(other_hash) Same as +deep_merge+, but modifies +self+. deep_merge!(other_hash) return bool that does the sub hash all element include the hash who call this or not deep_include?(sub_hash) in Kernel eats puts like formated printf method just use an integer what will be the distance between elements and the elements next to it putsf(integer,*args)