Utilisation du gem uuid sur un serveur parta gé


#1

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


#2

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_


#3

On Jan 16, 2:26 pm, Jean-François Trân removed_email_address@domain.invalid 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 :smiley:

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


#4

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.
http://blog.shingara.fr


#5

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_


#6

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


#7

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_


#8

Un problème de résolu, mais un nouveau apparait. J’en ai marre … :wink:


#9

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.