Forum: Rails France Utilisation du gem uuid sur un serveur parta gé

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Tranquiliste (Guest)
on 2009-01-16 15:10
(Received via mailing list)
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
Jean-François Trân (Guest)
on 2009-01-16 15:27
(Received via mailing list)
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_
Tranquiliste (Guest)
on 2009-01-16 15:47
(Received via mailing list)
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 :D

>
> 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
Cyril M. (Guest)
on 2009-01-16 15:48
(Received via mailing list)
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
Jean-François Trân (Guest)
on 2009-01-16 16:16
(Received via mailing list)
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_
Tranquiliste (Guest)
on 2009-01-16 19:36
(Received via mailing list)
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
Tranquiliste (Guest)
on 2009-01-16 20:43
(Received via mailing list)
Un problème de résolu,  mais un nouveau apparait. J'en ai marre ... ;)
Jean-François Trân (Guest)
on 2009-01-16 21:05
(Received via mailing list)
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_
Tranquiliste (Guest)
on 2009-01-16 22:47
(Received via mailing list)
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.
This topic is locked and can not be replied to.