Help on Directory Iteration

Discussion in 'Ruby' started by Newb Newb, Jan 27, 2009.

  1. Newb Newb

    Newb Newb Guest

    Hi People i have never done file or Directory manipulations before.
    now in my form i have given date field and search button.
    if the user enters date and clicks the search button,accoding to the
    date entered it has to search for the folder in the ChatHistory folder
    for example user enters date like 2009-01-23 means it has to search for
    the folder which named 2009-01-23.
    if the foder exists again it has to be iterated when i do this i get
    error.
    folder structure would be ChatHistory has one folder like 2009-01-23
    has two folder namely test and user these two folders contain 2 files
    each.
    My code starts here
    if params[:first_name].blank? and params[:second_name].blank? and
    !params[:e_date][0].blank? and params[:e_date][1].blank?
    puts "frtst date is not blank others are blank"
    Dir.foreach("ChatHistory") do |f|
    if f == params[:e_date][0]
    puts "there:"
    Dir.foreach(f) do |p|
    puts p
    end
    end
    end



    Pls Kindly help me up
    --
    Posted via http://www.ruby-forum.com/.
    Newb Newb, Jan 27, 2009
    #1
    1. Advertising

  2. On 27.01.2009 07:32, Newb Newb wrote:
    > Hi People i have never done file or Directory manipulations before.
    > now in my form i have given date field and search button.
    > if the user enters date and clicks the search button,accoding to the
    > date entered it has to search for the folder in the ChatHistory folder
    > for example user enters date like 2009-01-23 means it has to search for
    > the folder which named 2009-01-23.
    > if the foder exists again it has to be iterated when i do this i get
    > error.
    > folder structure would be ChatHistory has one folder like 2009-01-23
    > has two folder namely test and user these two folders contain 2 files
    > each.
    > My code starts here
    > if params[:first_name].blank? and params[:second_name].blank? and
    > !params[:e_date][0].blank? and params[:e_date][1].blank?
    > puts "frtst date is not blank others are blank"
    > Dir.foreach("ChatHistory") do |f|
    > if f == params[:e_date][0]
    > puts "there:"
    > Dir.foreach(f) do |p|


    f does not contain the full path here so you need something like:

    Dir.foreach(File.join("ChatHistory",f)) do |p|

    Btw, it's often helpful to put a few printing statements here and there
    during debugging. :)

    > puts p
    > end
    > end
    > end


    Kind regards

    robert

    --
    remember.guy do |as, often| as.you_can - without end
    Robert Klemme, Jan 27, 2009
    #2
    1. Advertising

  3. Newb Newb

    Newb Newb Guest

    Newb Newb, Jan 27, 2009
    #3
  4. RnJvbTogTmV3YiBOZXdiIFttYWlsdG86cmV2YXRoeS5wQGFuZ2xlcml0ZWNoLmNvbV0gDQojICAg
    RGlyLmZvcmVhY2goIkNoYXRIaXN0b3J5IikgZG8gfGZ8DQojICAgICBpZiBmID09IHBhcmFtc1s6
    ZV9kYXRlXVswXQ0KIyAgICAgICAgcHV0cyAidGhlcmU6Ig0KIyAgICAgICAgRGlyLmZvcmVhY2go
    ZikgZG8gfHB8DQojICAgICAgICBwdXRzIHANCiMgICAgICAgIGVuZA0KIyAgICAgZW5kDQojICAg
    ZW5kDQoNCmhtbSwgZm9sZGVyL2ZpbG5hbWVzIGFyZSB1bmlxIGZvciBlYWNoIGxldmVsLCBzbyB5
    b3Ugc2hvdWxkICpub3QgbmVlZCB0byBpdGVyYXRlIHRoYXQgbm8/IHRoYXQgaXMsDQoNCiAgRGly
    LmZvcmVhY2goJ0NoYXRIaXN0b3J5LycrcGFyYW1zWzplX2RhdGVdWzBdKSBkbyB8cGF0aHwNCiAg
    ICBwdXRzIHBhdGggdW5sZXNzICV3KC4gLi4pLmluY2x1ZGU/IHBhdGgNCiAgZW5kDQoNCmFuZCBp
    IHdvdWxkIGFsc28gcmVmcmFpbiB1c2luZyBwIGFzIGEgdmFyIG5hbWUgOykNCg0K
    Peña, Botp, Jan 27, 2009
    #4
  5. Newb Newb

    Newb Newb Guest

    Newb Newb, Jan 27, 2009
    #5
  6. Newb Newb

    Newb Newb Guest

    if params[:first_name].blank? and params[:second_name].blank? and
    !params[:e_date][0].blank? and params[:e_date][1].blank?
    puts "frtst date is not blank others are blank"
    Dir.foreach("ChatHistory") do |folder_name|
    if folder_name == params[:e_date][0]
    puts "there:"
    puts folder_name
    @sub_folder_one = Array.new
    Dir.foreach(File.join("ChatHistory",folder_name)) do
    |sub_folder_name|
    @sub_folder_one << sub_folder_name
    end
    end
    end
    end
    @sub_folder_one array has two folder names
    one is =>
    ~Vs~
    second is => testing
    14;23;
    in this i don't need the folder name which has date in
    that.
    that i don't need testing
    14;23;
    but i need
    ~Vs~
    how can i do that help me up pls
    --
    Posted via http://www.ruby-forum.com/.
    Newb Newb, Jan 27, 2009
    #6
  7. Newb Newb wrote:
    > folder structure would be ChatHistory has one folder like 2009-01-23
    > has two folder namely test and user these two folders contain 2 files
    > each.


    You can get a list of all files and subdirectories under a subdirectory
    like this:

    Dir["ChatHistory/2009-01-23/**/*"]

    Note: if you are inserting a value from a parameter, you should sanitise
    it first. At least remove /../, although it's safest to allow only valid
    values like this:

    date = params[:date]
    raise "Bad date format" unless date =~ /\A\d\d\d\d-\d\d-\d\d\z/
    Dir["ChatHistory/#{date}/**/*"].each do |f|
    ...
    end
    --
    Posted via http://www.ruby-forum.com/.
    Brian Candler, Jan 27, 2009
    #7
  8. On 27.01.2009 10:47, Newb Newb wrote:
    > Newb Newb wrote:
    >> Thanks for the timely reply

    >
    > v


    ?

    --
    remember.guy do |as, often| as.you_can - without end
    Robert Klemme, Jan 27, 2009
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. dwerdna
    Replies:
    5
    Views:
    5,306
    Ajeetha
    Mar 31, 2005
  2. Bruce Whitehouse
    Replies:
    3
    Views:
    385
    Alvin Bruney
    Nov 23, 2003
  3. jurujuba
    Replies:
    3
    Views:
    1,539
    Eliyahu Goldin
    Feb 20, 2005
  4. Rudi
    Replies:
    5
    Views:
    4,960
  5. Chris McComas

    Help with Iteration

    Chris McComas, Oct 18, 2008, in forum: Python
    Replies:
    6
    Views:
    269
    Aaron Brady
    Oct 19, 2008
Loading...

Share This Page