Rails3: uitvoeren van Rails-opdrachten (zoals "rails genereren") met shell-script

Ik moet in staat zijn om een ​​model (en later een migratie) te genereren door een Linux shell-script uit te voeren.

Het script bevindt zich direct in de app-map en ziet er als volgt uit:

#!/bin/bash

cd /home//Websites/
rails g model my_model name:string accepted:boolean [etc...]

Het probleem is: wanneer ik het script uitvoer, wordt het model niet gemaakt. Om het even welke ideeën waarom?

1
Wat gebeurt er ? ?
toegevoegd de auteur Dave Newton, de bron
@TomDogg Gebruik je rvm ofzo? Zonder de shebang werkt het prima voor mij bij het uitvoeren van een shell die al de juiste rvm/gemset gebruikt - zie geen reden waarom het niet zou moeten werken.
toegevoegd de auteur Dave Newton, de bron
@TomDogg gedaan; blij dat je het hebt laten werken. Maar tenzij het cmd line args kost, wat voor nut heeft het?
toegevoegd de auteur Dave Newton, de bron
Waarom gebruikt u geen Rails-generator?
toegevoegd de auteur coreyward, de bron
@coreyward: Bedankt voor de suggestie, ik zal dat zeker controleren (maar nog steeds benieuwd naar mijn probleem ...).
toegevoegd de auteur TomDogg, de bron
@Dave Newton: er gebeurt niets, de console bereidt zich voor op een ander commando, alsof het eerste commando met succes is uitgevoerd ...
toegevoegd de auteur TomDogg, de bron
@Dave Newton: Bedankt Dave, dat is gelukt! Ik dacht dat de #!/Bin/bash verplicht was voor elk .sh-script ... Ook is de "cd" niet nodig omdat het .sh-bestand al in de hoofdmap van de app staat. Nee, ik gebruik geen RVM of zoiets. Vergeet niet je antwoord hieronder toe te voegen als je het karma wilt ;-)
toegevoegd de auteur TomDogg, de bron

2 antwoord

Proberen

exec "rails g model my_model name:string accepted:boolean"
1
toegevoegd
Bedankt, maar helaas verandert dit niets ...
toegevoegd de auteur TomDogg, de bron

Om er zeker van te zijn dat het in dezelfde context wordt uitgevoerd waarin je shell zich bevindt, verwijder je de shebang om te voorkomen dat je nog een bash start die al dan niet hetzelfde is als je huidige shell.

Als u rvm/similar gebruikt, moet u ofwel (a) een standaardinstelling hebben, (b) versie/gemset specificeren, of (c) vertrouwen op rvm-achtige cd fudgery.

Anders zou het prima moeten werken - het is voor mij (zonder de shebang, dus het zal de huidige rvm-omgeving waarin ik zit gebruiken).

0
toegevoegd