Bonjour,
Je souhaite utiliser le gem UUID pour mon appli. Celui ci n’est pas
installé chez mon hébergeur (serverur partagé) et je l’ai donc
freezé,mais je me suis rendu compte que ce gem utilise un répertoire public
pour enregistrer le “state_file” or ce répertoire appartient au
premier qui l’a créé (et ce n’est pas moi).
J’ai demandé à l’hébergeur s’il pouvait faire quelque chose, mais
sinon je me demandais s’il n’est pas possible de modifier le gem pour
choisir le répertoire?
Je pense avoir trouvé la fonction qui le créé mais je ne sais pas
comment la modifier. Voici le code
def self.state_file(mode = 0644)
return @state_file if @state_file
@mode = mode
begin
require 'Win32API'
csidl_common_appdata = 0x0023
path = 0.chr * 260
get_folder_path = Win32API.new('shell32', 'SHGetFolderPath',
‘LLLLP’, ‘L’)
get_folder_path.call 0, csidl_common_appdata, 0, 1, path
state_dir = File.join(path.strip)
rescue LoadError
state_dir = File.join('', 'var', 'tmp')
end
if File.writable?(state_dir) then
@state_file = File.join(state_dir, 'ruby-uuid')
else
@state_file = File.expand_path(File.join('~', '.ruby-uuid'))
end
@state_file
end
Si vous avez une autre solution, je suis preneur.
Merci
Nicolas
Le 16 janvier 2009 14:06, Tranquiliste a écrit :
Je souhaite utiliser le gem UUID pour mon appli. Celui ci n’est pas
installé chez mon hébergeur (serverur partagé) et je l’ai donc freezé,
mais je me suis rendu compte que ce gem utilise un répertoire public
pour enregistrer le “state_file” or ce répertoire appartient au
premier qui l’a créé (et ce n’est pas moi).
J’ai demandé à l’hébergeur s’il pouvait faire quelque chose, mais
sinon je me demandais s’il n’est pas possible de modifier le gem pour
choisir le répertoire?
Bon on va supposer que tu n’es pas hébergé dans un
environnement Windows :))
Vérifie si tu ne peux pas utiliser le fichier ~/.ruby-uuid
Je pense avoir trouvé la fonction qui le créé mais je ne sais pas
comment la modifier. Voici le code
def self.state_file(mode = 0644)
return @state_file if @state_file
@mode = mode
Si vraiment tu es obligé de tortue-modifier, tu peux
redéfinir la méthode et remplacer la suite par :
@state_file = “chemin_ou_je_veux_parce_que_je_le_vaux_bien”
end
– Jean-François.
–
http://twitter.com/underflow_
On Jan 16, 2:26 pm, Jean-François Trân [email protected] wrote:
Bon on va supposer que tu n’es pas hébergé dans un
environnement Windows :))
Non je ne suis pas hébergé sur windows
Si vraiment tu es obligé de tortue-modifier, tu peux
redéfinir la méthode et remplacer la suite par :
@state_file = “chemin_ou_je_veux_parce_que_je_le_vaux_bien”
end
Ok merci
Jean-François Trân wrote:
choisir le répertoire?
end
Perso, je te conseillerais de proposer un patch en amont pour utiliser
une variable d’environnement comme UUID_STATE_FILE pour définir le
dossier et conserver le comportement actuel si cette variable n’est pas
renseigné. C’est par exemple ce que fait ruby_inline pour le dossier de
fichier C.
–
Cyril M.
Le 16 janvier 2009 14:06, Tranquiliste a écrit :
Je souhaite utiliser le gem UUID pour mon appli.
state_dir = File.join('', 'var', 'tmp')
end
il fait une vérification sur /var/tmp
if File.writable?(state_dir) then
@state_file = File.join(state_dir, ‘ruby-uuid’)
mais pas sur /var/tmp/ruby-uuid
else
@state_file = File.expand_path(File.join(‘~’, ‘.ruby-uuid’))
end
@state_file
end
Si vous avez une autre solution, je suis preneur.
Il y a d’autres libs, comme uuidtools.
– Jean-François.
–
http://twitter.com/underflow_
Dans un premier temps, ja’i essayé de faire bestial
def self.state_file(mode = 0644)
return @state_file if @state_file
@mode = mode
@state_file = '/home/user/www/.ruby-uuid'
@state_file
end
mais malheureusement il me sort une erreur qui n’a a priori rien à
voir (le fichier .ruby-uuid ayant été créé)
A Errno::EEXIST occurred in users#update:
File exists - /home/user/www/integration/releases/20090116152638/
public/uploads
2009/1/16 Tranquiliste :
Un problème de résolu, mais un nouveau apparait.
C’est exactement le principe de cette liste !
– Jean-François.
–
http://twitter.com/underflow_
Un problème de résolu, mais un nouveau apparait. J’en ai marre …
Problème résolu. Je m’attaque au suivant (celui que je t’ai soumis par
mail JF ;), je poserai sans doute des questions dans un fil différent.