Insertion de code dans un fichier ruby (pas a la fin)


#1

Bonjour,

J’ai un problème avec l’insertion de texte dans un fichier ruby. J’ai
besoin d’intégrer une ligne dans mon fichier “routes.rb” afin de lui
ajouter des relations (has_many, belongs…) ou autre.

Au début, j’utilisais un template
(http://www.bounga.org/post/2009/01/30/Rails-Templates) et je n’avais
qu’Ã faire un => route “map.root :controller => ‘news’” par exemple.

Maintenant pour diverses raison, je n’en utilise plus et je souhaiterais
pouvoir ouvrir mon fichier ruby et insérer une ligne contenant du code.

J’ai testé plusieurs solutions trouvées sur le forum mais en vain!
Comment dois-je procéder ?

Merci


#2

Le 14 mai 09 à 14:05, Encore lui a écrit :

Maintenant pour diverses raison, je n’en utilise plus et je
souhaiterais
pouvoir ouvrir mon fichier ruby et insérer une ligne contenant du
code.

J’ai testé plusieurs solutions trouvées sur le forum mais en vain!
Comment dois-je procéder ?

vim route.rb
i
map.resource xxx


Cyril M.
http://blog.shingara.fr


#3

Encore lui a écrit :

rm -r fichier

#traitement des modifications d’un fichier

mkdir rep

Il y a les templates rails pour ca.


#4

Encore lui a écrit :

rm -r fichier

#traitement des modifications d’un fichier

mkdir rep

Si c’est simplement pour ajouter le texte à la fin :

echo “map.resource xxx” | cat >> route.rb


Julien.


#5

En fait, j’ai un long script de génération de mon application rails qui
contient plusieurs commandes “système”. Dans ce script, j’ai besoin
d’intégrer une commande qui va modifier le contenu d’un fichier ruby et
lui ajouter du texte. Par exemple, insérer une ligne après la première
et placer mon texte. A la fin, les modifs sont enregistrées et d’autres
commandes vont être executées par la suite.

Structure exemple :

rm -r fichier

#traitement des modifications d’un fichier

mkdir rep


#6

Oui je sais qu’il y a des templates merci pour l’info mais je ne
souhaite pas les utiliser dans ce cas la.

Sinon, je ne veux pas ajouter le texte à la fin mais au centre ou à la
seconde ligne par exemple en insérant un nouveau texte…


#7

Encore lui wrote:

Oui je sais qu’il y a des templates merci pour l’info mais je ne
souhaite pas les utiliser dans ce cas la.

Sinon, je ne veux pas ajouter le texte à la fin mais au centre ou à la
seconde ligne par exemple en insérant un nouveau texte…

Une petite fonction bien utile :

def file_inject(file_name, sentinel, string, before_after=:after)
gsub_file file_name, /(#{Regexp.escape(sentinel)})/mi do |match|
if :after == before_after
“#{match}\n#{string}”
else
“#{string}\n#{match}”
end
end
end

Source :
http://github.com/pixels-and-bits/strappy/blob/1d02cc07ac4b14a324b5eaac0d583c5bf2c672e4/base.rb


#8

C’est normal qu’il ne trouve pas la méthode ‘gsub_file’ ?

./essai.rb:4:in file_inject': undefined methodgsub_file’ for
main:Object (NoMethodError)
from ./essai.rb:13


#9

Sérieusement, dans ce magnifique langage qu’est ruby, il n’y a pas moyen
de faire une simple ouverture de fichier et d’y integrer du texte non Ã
la fin du code mais au coeur du fichier ou à la seconde ligne ou en
inserant une ligne ?


#10

Encore lui a écrit :

Sinon, je ne veux pas ajouter le texte à la fin mais au centre ou à la
seconde ligne par exemple en insérant un nouveau texte…

En plus c’était dans le sujet… Désolé.


#11

2009/5/20 Babiben ***** removed_email_address@domain.invalid

Sérieusement, dans ce magnifique langage qu’est ruby, il n’y a pas moyen
de faire une simple ouverture de fichier et d’y integrer du texte non Ã
la fin du code mais au coeur du fichier ou à la seconde ligne ou en
inserant une ligne ?

C’est disponible dans tous les langages, ou presque : open, seek, write


http://fabien.jakimowicz.com


#12

Babiben ***** wrote:

Sérieusement, dans ce magnifique langage qu’est ruby, il n’y a pas moyen
de faire une simple ouverture de fichier et d’y integrer du texte non Ã
la fin du code mais au coeur du fichier ou à la seconde ligne ou en
inserant une ligne ?

Je pensais que tu aurais cherché un peu…
La fonction est juste au dessus. Si tu bloques sur le gsub_file c’est
que tu n’as même pas pris la peine d’aller voir ce dont il s’agit.

C’est pas uniquement du copier/coller, il faut au minimum lire et
comprendre pour adapter a ton besoin.

Mais bon…pour ton information, une simple recherche sur gsub_file sur
ton ami google t’aurais indiqué qu’il s’agit d’une méthode de
Rails::Generator::Commands::Base.
2 solutions :

  • l’inclure pour pouvoir l’utiliser
  • la refaire à l’identique

#13

On 20 mai 2009, at 12:22, Babiben ***** removed_email_address@domain.invalid
wrote:

Contrairement aux apparences, j’ai bien fait des recherches sur la
fonction gsub_file. N’ayant pas compris une partie des arguments Ã
entrer et étant très blond, j’ai décidé de me pencher sur une aut
re
solution et rechercher comme dans la plupart des langages une fonction
seek…

Google : ruby+file+open+seek premier lien blindé d’exemples

Sinon RubyDoc …


#14

Contrairement aux apparences, j’ai bien fait des recherches sur la
fonction gsub_file. N’ayant pas compris une partie des arguments Ã
entrer et étant très blond, j’ai décidé de me pencher sur une autre
solution et rechercher comme dans la plupart des langages une fonction
seek…


#15

le “cat” ne sert à rien ^^echo “map.resource xxx” >> route.rb

  • Romain

2009/5/14 Julien R. removed_email_address@domain.invalid