Forum: Italian Ruby user group rails & "rename convention"

E555a767a33427bfee0bb0878566293c?d=identicon&s=25 gabriele renzi (Guest)
on 2012-05-03 09:19
(Received via mailing list)
Eil,

vedendo la mail di Cluter Vipic sul rinominare una app rails m'
venuto in mente di chiedere di nuovo se qualcuno si  fatto una
gem/rake task/script awk per rinominare qualcosa dentro una app rails
in modo furbo.

Ovvero, una cosa tipo


rails rename foo bar

che faccia

.1 un rename di file e directory "convenzionali"

   app/models/foo.rb -> bar.rb
   app/controllers/foos_controller.rb -> bars.rb
   app/views/foos/ -> /views/bars/
   test/unit....


.2 un replace dentro il resto dei file delle occorrenze di Foo,
'foo/bar', FooController, @foo etc

.3 una bella migrazioncina che rinomini la tabella foos in bars e i
riferimenti foo_id in bar_id

Premesso che nn funzioner nel 100% dei casi etc etc.. io avevo uno
script che faceva una parte del lavoro,
ed era comodo. Ma era due hard-drive-non-backuppati fa ..



--
twitter: @riffraff
blog (en, it): www.riffraff.info riffraff.blogsome.com
work: circleme.com
A1bc8563b294df7078d1ce3d634f5d17?d=identicon&s=25 Luigi Maselli - grigio.org (grigio)
on 2012-05-03 10:49
C'è https://github.com/get/Rename che non ho mai provato perché
normalmente uso 2 script one-liner fatti con egrep, ma che adesso non ho
a portata di mano

Sulla CLI propongo:

- rails rename old new
Che fa vedere file e riga di dove verrà la sostituzione

- rails rename old new -f
Che procede effettivamente

Luigi
321db48bf4bdf48da05e781325aed20a?d=identicon&s=25 Maurizio De magnis (olistik)
on 2012-05-03 10:53
(Received via mailing list)
Maurizio
--
My profile <https://plus.google.com/100973969013103507046/about>




2012/5/3 Luigi Maselli - grigio.org <riccio@inmail.sk>

> Che procede effettivamente
e

- rails rename old new -i
che procede interattivamente (mostrando ogni occorrenza la scelta di
conferma/skip) ;-)
A1bc8563b294df7078d1ce3d634f5d17?d=identicon&s=25 Luigi Maselli - grigio.org (grigio)
on 2012-05-03 11:14
grep -lr -e 'OldApp:' * | xargs sed -i 's/OldApp:/NewApp:/g'

Trovato, "questo trenino" di script per me ha funzionato (su Linux), su
mac la seconda parte non va e ottengo

sed: 1: "Rakefile": invalid command code R

Luigi
3d6e548fa413cb093009599b24ff51d6?d=identicon&s=25 Duilio Ruggiero (sinetris)
on 2012-05-03 11:36
Luigi Maselli - grigio.org wrote in post #1059392:
> grep -lr -e 'OldApp:' * | xargs sed -i 's/OldApp:/NewApp:/g'
>
> Trovato, "questo trenino" di script per me ha funzionato (su Linux), su
> mac la seconda parte non va e ottengo
>
> sed: 1: "Rakefile": invalid command code R
>
> Luigi

Ciao Luigi,
su Mac quando usi sed devi specificare l'estensione per i backup.

Ti incollo la risposta che ho dato su stackoverwlow a una domanda
simile:

If you use the -i option you need to provide an extension for your
backups.

If you have:

File1.txt
File2.cfg
The command:

sed -i '.original' 's/old_link/new_link/g' *
create 2 backup files like:

File1.txt.original
File2.cfg.original
You can use

sed -i '' 's/old_link/new_link/g' *
to ignore backups.

http://stackoverflow.com/questions/4247068/sed-com...

Quindi il comando da usare è:

 grep -lr -e 'OldApp:' * | xargs sed -i '' 's/OldApp:/NewApp:/g'


--
Duilio Ruggiero
http://sinetris.info
A1bc8563b294df7078d1ce3d634f5d17?d=identicon&s=25 Luigi Maselli - grigio.org (grigio)
on 2012-05-03 21:52
Grazie, confermo questo funziona anche su mac.

Luigi

Duilio Ruggiero wrote in post #1059394:
>
>  grep -lr -e 'OldApp:' * | xargs sed -i '' 's/OldApp:/NewApp:/g'
>
A1bc8563b294df7078d1ce3d634f5d17?d=identicon&s=25 Luigi Maselli - grigio.org (grigio)
on 2012-05-04 13:20
Ho creato una gem che può essere integrata facilmente in qualsiasi app e
si usa tramite rake. Testate, forkate, aggiungete pure se volete
rinominare modelli e/o migration.

https://github.com/grigio/rails_rename

Per rinominare un progetto basta aggiungere gem 'rails_rename' al
Gemfile, bundle install ed eseguire:

rake rails:rename[NewAppName]

Ciao
Luigi
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.