|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
I have a little app that needs to store session data. I assume the
best place to store it is in one's home directory, but I need this app to be cross-platform. I glanced through all rbconfig.rb's Config::CONFIG settings but did not see anything for it. How does one access a cross-platform home directory? Thanks, T. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Trans wrote:
> I have a little app that needs to store session data. I assume the > best place to store it is in one's home directory, but I need this app > to be cross-platform. I glanced through all rbconfig.rb's > Config::CONFIG settings but did not see anything for it. How does one > access a cross-platform home directory? This is one way of guessing: case RUBY_PLATFORM when /win32/ ENV['APPDATA'] || ENV['USERPROFILE'] || ENV['HOME'] else ENV['HOME'] || File.expand_path('~') end Typical values: ENV['APPDATA'] == "C:\Documents and Settings\username\Application Data" ENV['USERPROFILE'] == "C:\Documents and Settings\username" (This is from my 'preferences' lib.) I have no idea what is right on OS X. I'm sure someone has thought this through in more detail... -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Sep 13, 1:37 pm, Joel VanderWerf <vj...@path.berkeley.edu> wrote: > Trans wrote: > > I have a little app that needs to store session data. I assume the > > best place to store it is in one's home directory, but I need this app > > to be cross-platform. I glanced through all rbconfig.rb's > > Config::CONFIG settings but did not see anything for it. How does one > > access a cross-platform home directory? > > This is one way of guessing: <snip> I think the appdata directory is where you want it for MS Windows. You can use win32-dir, since the environment variable may not be defined: when /mswin/ require 'win32/dir' Dir::APPDATA Regards, Dan |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On 9/13/07, Glen Holcomb <damnbigman@gmail.com> wrote:
> On 9/13/07, Glen Holcomb <damnbigman@gmail.com> wrote: > > > > On 9/13/07, Trans <transfire@gmail.com> wrote: > > > > > > I have a little app that needs to store session data. I assume the > > > best place to store it is in one's home directory, but I need this app > > > to be cross-platform. I glanced through all rbconfig.rb's > > > Config::CONFIG settings but did not see anything for it. How does one > > > access a cross-platform home directory? > > > > > > Thanks, > > > T. Rubygems has a method for finding this: C:\>irb -rubygems >> Gem.user_home => "C:\\Documents and Settings\\gthiesfeld" |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Hi,
At Fri, 14 Sep 2007 04:19:04 +0900, Trans wrote in [ruby-talk:268970]: > I have a little app that needs to store session data. I assume the > best place to store it is in one's home directory, but I need this app > to be cross-platform. I glanced through all rbconfig.rb's > Config::CONFIG settings but did not see anything for it. How does one > access a cross-platform home directory? There is no static value. FYI, in 1.9, if ENV["HOME"] isn't set, it will be set to 1) ENV["HOMEDRIVE"] + ENV["HOMEPATH"] 2) ENV["USERPROFILE"] or 3) "Personal" special folder in the above order. -- Nobu Nakada |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Joel VanderWerf <vjoel@path.berkeley.edu> wrote:
> I have no idea what is right on OS X. ENV[ 'HOME' ] for example my "home" is : /Users/yt (never tried the File.expand_path('~') ) BUT on Mac OS X shell ~ expand to home. also i worry about the way win* representent pathes with \ does that means that, in ruby, there is no platform-independant way to representant pathes, as, for example in Java ? -- La politique est l'art d'empécher les gens de se méler de ce qui les regarde. Paul Valéry |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
> -----Original Message----- > From: "Une B=E9v" "ue" = [mailto:unbewusst.sein@wortanschahung.com.invalid] > Sent: Friday, September 14, 2007 7:20 AM > To: ruby-talk ML > Subject: Re: Cross-platform Home Directory? >=20 > does that means that, in ruby, there is no platform-independant way to > representant pathes, as, for example in Java ? 8:31:09.25 C:\Users\CynicalRyan >ls gems.txt gems.txt 8:31:14.01 C:\Users\CynicalRyan >irb --simple-prompt >> File.open("c:/Users/CynicalRyan/gems.txt") =3D> #<File:c:/Users/CynicalRyan/gems.txt> >ruby -v ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32] >ver Microsoft Windows [Version 6.0.6000] -- Phillip Gawlowski |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Trans a écrit :
> I have a little app that needs to store session data. I assume the > best place to store it is in one's home directory, but I need this app > to be cross-platform. I glanced through all rbconfig.rb's > Config::CONFIG settings but did not see anything for it. How does one > access a cross-platform home directory? > > Thanks, > T. > This is how I do this : home_directory = Dir.chdir {|path| path} The doc for Dir.chdir says that without argument, this method looks for environnement variables HOME or LOGDIR. And with a block, the directory is changed only inside the block, and restored right after. -- Olivier Renaud |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
> case RUBY_PLATFORM
> when /win32/ > ENV['APPDATA'] || > ENV['USERPROFILE'] || > ENV['HOME'] As HOME usually isn't set on windows, the existence of the variable could indicate that the user would like to override the windows default. I would thus check for HOME first. Also, under cygwin ruby all three variables are set, but APPDATA and USERPROFILE are "inherited" from the windows environment and are by default set as Windows path while HOME usually is set as cygwin path. In certain situations, this could cause certain difficulties, eg when calling external programs. It seems the trick with chdir doesn't work when neither HOME nor LOGDIR is set -- as it is usually the case under Windows, I think. |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
Trans wrote:
> I have a little app that needs to store session data. I assume the > best place to store it is in one's home directory Everyone's ed you with ways to find the home directory, but on Windows this is not normally the right place to store session data. That's what Application Data is for. Make a directory under there for your application. Configuration data (user-modifiable but less frequently-changing) may be stored in the registry. The Windows certification documents describe where you should put stuff. Clifford Heath. |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
> -----Original Message----- > From: Clifford Heath [mailto:no@spam.please.net] > Sent: Saturday, September 15, 2007 6:25 AM > To: ruby-talk ML > Subject: Re: Cross-platform Home Directory? > Everyone's ed you with ways to find the home directory, but on > Windows this is not normally the right place to store session data. > That's what Application Data is for. Make a directory under there for your > application. Configuration data (user-modifiable but less frequently-changing) > may be stored in the registry. ENV["APPDATA"] produces the Application Data directory. Best to use that: >> ENV["APPDATA"] => "C:\\Users\\CynicalRyan\\AppData\\Roaming" >> exit Since it is in a different location from Windows XP in Vista (the above path is a Vista path). > The Windows certification documents describe where you should put > stuff. Are these available on MSDN? -- Phillip Gawlowski |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Olivier Renaud wrote:
> Trans a écrit : >> I have a little app that needs to store session data. I assume the >> best place to store it is in one's home directory, but I need this app >> to be cross-platform. I glanced through all rbconfig.rb's >> Config::CONFIG settings but did not see anything for it. How does one >> access a cross-platform home directory? >> >> Thanks, >> T. >> > This is how I do this : > home_directory = Dir.chdir {|path| path} > > The doc for Dir.chdir says that without argument, this method looks for > environnement variables HOME or LOGDIR. And with a block, the directory > is changed only inside the block, and restored right after. > > -- > Olivier Renaud > > At first I would just check ENV to see if HOME or USERPROFILE was set. Then some one told me about the Platform gem :-) You know, the OOP thing gives me a nice idea of how to use that hehe. TerryP. -- Email and shopping with the feelgood factor! 55% of income to good causes. http://www.ippimail.com |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Joel VanderWerf wrote:
> Trans wrote: >> I have a little app that needs to store session data. I assume the >> best place to store it is in one's home directory, but I need this app >> to be cross-platform. I glanced through all rbconfig.rb's >> Config::CONFIG settings but did not see anything for it. How does one >> access a cross-platform home directory? > > This is one way of guessing: > > case RUBY_PLATFORM > when /win32/ > ENV['APPDATA'] || > ENV['USERPROFILE'] || > ENV['HOME'] > > else > ENV['HOME'] || > File.expand_path('~') > end > > Typical values: > > ENV['APPDATA'] == "C:\Documents and Settings\username\Application Data" > ENV['USERPROFILE'] == "C:\Documents and Settings\username" > > (This is from my 'preferences' lib.) > > I have no idea what is right on OS X. I'm sure someone has thought this > through in more detail... > > -- > vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407 > > I think Mac OS X should have the traditional unix variables set, like ${HOME} and ${EDITOR} but I don't own a mac to find out :'(. -- Email and shopping with the feelgood factor! 55% of income to good causes. http://www.ippimail.com |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
Joel VanderWerf wrote:
> Trans wrote: >> I have a little app that needs to store session data. I assume the >> best place to store it is in one's home directory, but I need this app >> to be cross-platform. I glanced through all rbconfig.rb's >> Config::CONFIG settings but did not see anything for it. How does one >> access a cross-platform home directory? > > This is one way of guessing: > > case RUBY_PLATFORM > when /win32/ > ENV['APPDATA'] || > ENV['USERPROFILE'] || > ENV['HOME'] > > else > ENV['HOME'] || > File.expand_path('~') > end > > Typical values: > > ENV['APPDATA'] == "C:\Documents and Settings\username\Application Data" > ENV['USERPROFILE'] == "C:\Documents and Settings\username" > > (This is from my 'preferences' lib.) > > I have no idea what is right on OS X. I'm sure someone has thought this > through in more detail... > > -- > vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407 > > I think Mac OS X should have the traditional unix variables set, like ${HOME} and ${EDITOR} but I don't own a mac to find out :'(. -- Email and shopping with the feelgood factor! 55% of income to good causes. http://www.ippimail.com |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
Joel VanderWerf wrote:
> Trans wrote: >> I have a little app that needs to store session data. I assume the >> best place to store it is in one's home directory, but I need this app >> to be cross-platform. I glanced through all rbconfig.rb's >> Config::CONFIG settings but did not see anything for it. How does one >> access a cross-platform home directory? > > This is one way of guessing: > > case RUBY_PLATFORM > when /win32/ > ENV['APPDATA'] || > ENV['USERPROFILE'] || > ENV['HOME'] > > else > ENV['HOME'] || > File.expand_path('~') > end > > Typical values: > > ENV['APPDATA'] == "C:\Documents and Settings\username\Application Data" > ENV['USERPROFILE'] == "C:\Documents and Settings\username" > > (This is from my 'preferences' lib.) > > I have no idea what is right on OS X. I'm sure someone has thought this > through in more detail... > > -- > vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407 > > I think Mac OS X should have the traditional unix variables set, like ${HOME} and ${EDITOR} but I don't own a mac to find out :'(. -- Email and shopping with the feelgood factor! 55% of income to good causes. http://www.ippimail.com |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
On Sep 15, 2007, at 2:47 AM, Terry Poulin wrote: > > I think Mac OS X should have the traditional unix variables set, > like ${HOME} > and ${EDITOR} but I don't own a mac to find out :'(. > It does. You don't even have to own one to find out. You can find it out in Unix in a Nutshell. Those variables are set in any one of the several possible files that configure the shell. OS X uses Bash as the default shell. (older versions used Tcsh as the default shell, but it's similar enough.) It's as Unix as any *nix |
|
|
|
#17 |
|
Messages: n/a
Hébergeur: |
There's much more to this then I ever imagined. Thanks for all the
answers, certainly enough to here to go on. Thanks. T. P.S. Seems like Launchy could use this functionality --maybe merge the Platform gem to make a strong single lib rather than two separate libs -- just a thought. |
|
![]() |
| Outils de la discussion | |
|
|