[#321574] Regular Expressions — Mmcolli00 Mom <mmc_collins@...>

Hi everyone.

15 messages 2008/12/01

[#321655] Ruby cgi script — ZippySwish <fischer.jan@...>

I put "script.rb" into the cgi-bin folder of my webhost, but nothing's

12 messages 2008/12/02

[#321733] FFI 0.2.0 — "Wayne Meissner" <wmeissner@...>

Greetings Rubyists.

20 messages 2008/12/03

[#321920] Force a program to stop if runtime exceeds given duration — Aldric Giacomoni <"aldric[remove]"@...>

Any idea how to do that?

25 messages 2008/12/04
[#321924] Re: Force a program to stop if runtime exceeds given duration — "Glen Holcomb" <damnbigman@...> 2008/12/04

On Thu, Dec 4, 2008 at 10:04 AM, Aldric Giacomoni <"aldric[remove]"@

[#322011] Re: Force a program to stop if runtime exceeds given duration — Ron Fox <fox@...> 2008/12/05

See http://www.ruby-doc.org/core-1.9/classes/Process.html#M003012

[#322016] Re: Force a program to stop if runtime exceeds given duration — Aldric Giacomoni <"aldric[remove]"@...> 2008/12/05

Everybody automatically assumes that rubyists are using Linux - sadly,

[#321969] Are there any Ruby Technical Writers here? — Vito Fontaine <vito.matro@...>

I am a beginner with Ruby who was interested in writing some programs.

15 messages 2008/12/04
[#321975] Re: Are there any Ruby Technical Writers here? — Robert Klemme <shortcutter@...> 2008/12/04

On 04.12.2008 22:43, Vito Fontaine wrote:

[#321984] Re: Are there any Ruby Technical Writers here? — Vito Fontaine <vito.matro@...> 2008/12/05

Robert Klemme wrote:

[#322014] Proximity searches in Ruby — Stuart Clarke <stuart.clarke1986@...>

Does Ruby have the ability to perform proximity searches on data. For

14 messages 2008/12/05
[#322056] Re: Proximity searches in Ruby — Ilan Berci <coder68@...> 2008/12/05

No proximity searches with 1.8.. you would need a full fledged text

[#322073] shoes 2 (raisins) is go. — _why <why@...>

Salutations and hi.

13 messages 2008/12/06

[#322260] Help on algorythm — Helder Oliveira <hrpoliveira@...>

Guys i have been trying to make this algorythm but with no sucess, can

13 messages 2008/12/09
[#322261] Re: Help on algorythm — "Glen Holcomb" <damnbigman@...> 2008/12/09

On Tue, Dec 9, 2008 at 7:44 AM, Helder Oliveira <hrpoliveira@gmail.com>wrote:

[#322283] Completely new programmer lacks direction — Cameron Carroll <ubernoobs@...>

Hi. I recently picked up a beginning ruby book, having only lightly

17 messages 2008/12/09

[#322285] compare 2 text files - check for difference - Please help — Mmcolli00 Mom <mmc_collins@...>

Hi. I want to take two files that are supposed to be identical, then ook

12 messages 2008/12/09
[#322301] Re: compare 2 text files - check for difference - Please help — Brian Candler <b.candler@...> 2008/12/09

Mmcolli00 Mom wrote:

[#322306] Re: compare 2 text files - check for difference - Please help — Mmcolli00 Mom <mmc_collins@...> 2008/12/09

require 'diff/lcs/Array'

[#322417] why Hash corrupts 'key' object ? — Dmitry Perfilyev <dmitry1976@...>

Hi, I have next script:

13 messages 2008/12/10

[#322464] Q: FFI and C++? — Jeremy Henty <onepoint@...>

If I want to wrap a C++ library using FFI, can it cope with the name

14 messages 2008/12/11

[#322516] Invoking Ruby code from a low-level language? — Alex Fulton <a.fulton@...>

Hi, my sincerest apologies if this question has already been answered

11 messages 2008/12/11

[#322529] parallel method return value — Louis-Philippe <default@...>

Hi all,

17 messages 2008/12/12

[#322566] How to run background processes (more than 1 worker) parallely. — "Deepak Gole" <deepak.gole8@...>

Hi

10 messages 2008/12/12

[#322624] singleton methods vs. meta instance methods — Daniel DeLorme <dan-ml@...42.com>

If I understand the ruby object model correctly, then an object's

15 messages 2008/12/13

[#322705] ruby 1.9.1: Encoding trouble: broken US-ASCII String — Tom Link <micathom@...>

Hi,

22 messages 2008/12/14

[#322710] Help with an "easy" regular expression substitution — Iñaki Baz Castillo <ibc@...>

Hi, I'm getting crazy to get a theorically easy substitution:

16 messages 2008/12/14

[#322819] Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...>

Hi,

53 messages 2008/12/15
[#323877] Re: Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...> 2009/01/03

[#323903] Re: Pure Ruby Zlib::GzipWriter — Roger Pack <rogerpack2005@...> 2009/01/04

[#324011] Re: Pure Ruby Zlib::GzipWriter — Daniel Berger <djberg96@...> 2009/01/05

[#324442] Re: Pure Ruby Zlib::GzipWriter — Luis Lavena <luislavena@...> 2009/01/10

On Jan 9, 9:26=A0pm, "Charles L." <aquas...@gmail.com> wrote:

[#322987] Using ruby hash on array — Stuart Clarke <stuart.clarke1986@...>

I would like to process some data from an array and using hash to

14 messages 2008/12/17

[#323085] Ruby and Rails supported on 10gen — "Jim Menard" <jim.menard@...>

http://www.10gen.com/blog/2008/12/ruby-support-on-10gen

11 messages 2008/12/18

[#323166] Dreaming of a Ruby Christmas (#187) — Matthew Moss <matt@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

11 messages 2008/12/19

[#323204] get first and last line from txt file - how? — Mmcolli00 Mom <mmc_collins@...>

I have txt file with date/time stamps only. I want to grab the first

19 messages 2008/12/20
[#323205] Re: get first and last line from txt file - how? — Tim Hunter <TimHunter@...> 2008/12/20

Mmcolli00 Mom wrote:

[#323207] Re: get first and last line from txt file - how? — "Yaser Sulaiman" <yaserbuntu@...> 2008/12/20

I'm just wondering..

[#323273] how to make installing Ruby easier for amateurs — Tom Cloyd <tomcloyd@...>

Greetings!

21 messages 2008/12/22

[#323312] Name that data structure! — Simon Chiang <simon.a.chiang@...>

I'm using a data structure that I'm sure has been implemented and

18 messages 2008/12/22
[#323314] Re: Name that data structure! — "Gregory Brown" <gregory.t.brown@...> 2008/12/22

On Mon, Dec 22, 2008 at 5:38 PM, Simon Chiang <simon.a.chiang@gmail.com> wrote:

[#323342] Are all Ruby built-in objects thread safe? — "Just Another Victim of the Ambient Morality" <ihatespam@...>

Are all built-in objects thread safe? For example, if I have an array

23 messages 2008/12/23
[#323346] Re: Are all Ruby built-in objects thread safe? — Yukihiro Matsumoto <matz@...> 2008/12/23

Hi,

[#323519] What does 'Monkey Patching' exactly Mean in Ruby? — "Yaser Sulaiman" <yaserbuntu@...>

According to Wikipedia, a monkey patch[1] is:

36 messages 2008/12/27
[#323813] Re: What does 'Monkey Patching' exactly Mean in Ruby? — Jg W Mittag <JoergWMittag+Usenet@...> 2009/01/02

Phlip wrote:

[#323832] Re: What does 'Monkey Patching' exactly Mean in Ruby? — "David A. Black" <dblack@...> 2009/01/02

Hi --

[#323644] Why Ruby? — Mike Stephens <rubfor@...>

I have never seen or heard of Ruby in a corporate context. The single

35 messages 2008/12/30

[#323668] Ruby 1.9.1 RC1 is released — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

21 messages 2008/12/30

Persistent Objects with Ruby - simple beginning

From: Casimir Pohjanraito <piksNOSeliPAM@...>
Date: 2008-12-16 18:22:35 UTC
List: ruby-talk #322905
Object persistence, I want it, without SQL or other schemes that could be 
implemented in ruby and somewhat automated instead. Smalltalk and Squeak 
inspired. Objects exist, no CRUD or 'saving' or 'writes'.

So, as an attempt to I made this Storage singleton and Storable -class. 
(code at end or at http://pastie.org/340631 )

It is very simple and crude. I am not a computer scientist, more like an 
artist with tourettes.

Nevertheless, I was hoping to get input. I think perhaps the next step 
would be changing this into a module.

If time and skills permit it, it would be fun to make a ruby fork with 
persistence similar to Prevayler (mem + snapshots&transactions record) or 
Squeak (save image of VM), like DHH suggested in 2k8 Rubyconf:

Persruby.

Have fun,
Casimir

#start START
#See example at end of file. Paste into IRB or save as file and load to 
test.

class Storable

  #Marshals objects, creates meta-data labels
  #Intent: abstracts marshaling, unique filename, structured labeling
  #ORM-like?

  
attr_accessor :filename, :label, :label_str, :user, :private, :tags, :description

  def initialize(given_name = "unknown_object") 
    @creation_time = Time.now.tv_sec
    @given_name = given_name.to_s
    @tags = "storable" #for metainfo
    @description = "desc"

    #generate label
    self.labelize()

    #generate filename
    filename_str = @given_name +"."+ self.object_id.to_s 
# +"."+ @creation_time.to_s
    filename_str = filename_str.gsub(" ", "_")
    @filename = filename_str #why this again?!?
  end #init

  def labelize #sets storable's attribs for the purposes of labeling them
    @label = {
    	#   - object class
    	:class => self.class.to_s,
    	# 	- given name
    	:given_name => @given_name,
    	# 	- object id
    	:object_id => self.object_id.to_s,
    	#   - time created
    	:time_created => @creation_time.to_s, #seconds since epoch
    	# 	- owner
    	:user => "user",
    	#   - tags_str
    	:tags => @tags.to_s,
    	#   - description_str
    	:description => @description.to_s
    	#   - date now (filesystem?)		
    }
    
    #Label packaged to a String -form
    @label_str = ""
    self.label.each_pair { |key, val|
    	#each pair into string delimited by |
    	label_str << key.to_s + "|" + val.gsub("|", "!").to_s + "\n"
    }

  end #end labelize

  def put_into_storage
  #marshals, labels and stores object in Storage
    #future args command_msg_str
    #set object label
    labelize()
    #marshal object
    package = Marshal.dump(self)
    #store label and object
    #resolve 'storage path'
    relative_path_str = "serialized." + self.class.to_s + "." + 
@filename.to_s

    #store label
    lbl_path = relative_path_str + ".label"
    Storage.store(lbl_path, @label_str)
    
    #store file
    Storage.store(relative_path_str, package)
  end

   def self.find_by_fname(fname) #not implemented 
     found = nil  
     ObjectSpace.each_object(Object) { |o|  
       found = o if o.fname == fname  
     }  
     found  
  end

end #Class Storable

# Storage.rb - datastore-module
# - Storage abstraction 1st. Scalability 2nd.
# - gold spike: store marshaled objects
# - future store YML -objects in a namespace of some kind.
# - future SQL

#Roadmap
# DB/QL support
# I. Marshall objects
#     - serialize/re-instance
#     - namespace?
# II. Yaml/JSON/XML
# III. ODB?
# IV. MySQL and so on
#
#Inteface Roadmap
#   * Make a module instead of inheritable?!?
#   * store.config. Configurable parameters.
#   * Store object.
#   * Retrieve object.
#   * Sort/Compare/etc

require "singleton.rb"

class Storage 

  include Singleton

  #Instantiated with:
  #Storage = Storage.instance
  #
  #Requires:
  #writable storage_home_local_path -directory
  #Object to be stored is of class storable
  #
  #Usage:
  #Storage.store(object, path_str)
  #
  #Returns:
  #future: status code indicating the result
  
  #TODO move this to config-file

  @@storage_home_local_path = '/tmp/'

  attr_reader :storage_home_local_path 

  ### Constructor ###############################
  def initialize() 

  end #init

  def set_storage_configuration()
  end

   ### CLASS METHODS #############################
  def self.store(relative_path_str, content_string)
    store_content_string(relative_path_str, content_string)
   end

  def self.store_content_string(relative_path_str, content_string)
    	target_path = @@storage_home_local_path + relative_path_str
      #print target_path
      wf_io = File.open(target_path, "w")
    	wf_io.write(content_string)
        unless wf_io.closed?
          #wf_io.flush()
    		  wf_io.close()
      end
  end

  def self.query(selector_str, keyword_str)

    case selector_str
      when "by_path"
        items = Dir[@@storage_home_local_path + keyword_str]
        labels = Dir[@@storage_home_local_path + keyword_str + ".label"]
        items = items-labels

      when "by_class"
    		#etc etc
  
    end #case
  end

  def self.unpack(relative_path_or_filename_str)  
    #returns unpacked stored object
    #resolve path
    relative_path_or_filename_str = relative_path_or_filename_str.gsub
(@@storage_home_local_path, "") #remove path in case exists so no dbl path
    target_path = @@storage_home_local_path + 
relative_path_or_filename_str.to_s

    begin 
      open(target_path) do |f|
      @loaded_object = Marshal.load(f)
      end
    rescue StandardError => crash
      print "Storage unpack: Standard Error opening file "
      print target_path.to_s + ", returned: " + crash + ". "
    end
    
    return @loaded_object
  end

end #e Storage

#Example code

Storage.instance #a instance of the Storage

class Tester < Storable
  def initialize(some_str)
    super()
    @stuff = Array.new
    20.times { @stuff.push(some_str.to_s) }
  end

  attr_reader :stuff
end

this_test = Tester.new("Test for comp.lang.ruby")
this_test.put_into_storage()
print this_test = "blah"

presumed_obj = Dir["/tmp/**unknown_object**"][0].to_s
unserred = Storage.unpack(presumed_obj)
print unserred.inspect()
print unserred.stuff #??!??

#end END END


Casimir Pohjanraito - Portfolio http://csmr.dreamhosters.com

In This Thread

Prev Next