# Rails & "rename convention"

**URL:** <https://www.ruby-forum.com/t/rails-rename-convention/219444>\
**Category:** IT\
**Created:** [May 3, 2012, 9:19am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444 "2012-05-03T09:19:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [May 3, 2012, 9:19am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/1 "2012-05-03T09:19:20Z")

</div>

Eil,

vedendo la mail di Cluter V. 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](http://riffraff.blogsome.com)  
work: [circleme.com](http://circleme.com)

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 3, 2012, 10:49am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/2 "2012-05-03T10:49:34Z")

</div>

C’è [GitHub - galkn/Rename: Plugin for easily renaming your Rails3 app](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

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 3, 2012, 11:14am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/3 "2012-05-03T11:14:38Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 3, 2012, 9:52pm UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/4 "2012-05-03T21:52:29Z")

</div>

Grazie, confermo questo funziona anche su mac.

Luigi

Duilio R. wrote in post #1059394:

> grep -lr -e ‘OldApp:’ \* | xargs sed -i ‘’ ‘s/OldApp:/NewApp:/g’

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 3, 2012, 10:53am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/5 "2012-05-03T10:53:36Z")

</div>

## Maurizio

My profile [https://plus.google.com/100973969013103507046/about](https://plus.google.com/100973969013103507046/about)

2012/5/3 Luigi M. - [grigio.org](http://grigio.org) [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Che procede effettivamente  
> e

- rails rename old new -i  
che procede interattivamente (mostrando ogni occorrenza la scelta di  
conferma/skip) 😉

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 3, 2012, 11:36am UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/6 "2012-05-03T11:36:46Z")

</div>

Luigi M. - [grigio.org](http://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.

> <https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux/4247319#4247319>

Quindi il comando da usare è:

grep -lr -e ‘OldApp:’ \* | xargs sed -i ‘’ ‘s/OldApp:/NewApp:/g’

–  
Duilio R.  
[http://sinetris.info](http://sinetris.info)

---

<div class="post-metadata">

**Author:** ![gabriele\_renzi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/e19b73/32.png) [@gabriele\_renzi](https://www.ruby-forum.com/u/gabriele_renzi)\
**Post date:** [May 4, 2012, 1:20pm UTC](https://www.ruby-forum.com/t/rails-rename-convention/219444/7 "2012-05-04T13:20:39Z")

</div>

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.

> **[GitHub - grigio/rails\_rename: An easy way to rename a Rails app](https://github.com/grigio/rails_rename)**
>
> An easy way to rename a Rails app. Contribute to grigio/rails\_rename development by creating an account on GitHub.

Per rinominare un progetto basta aggiungere gem ‘rails\_rename’ al  
Gemfile, bundle install ed eseguire:

rake rails:rename[NewAppName]

Ciao  
Luigi
