2017-01-26 2 views
0

Ich bin neu in Ruby. Ich möchte eine einfache Rake-Aufgabe erstellen, um Benutzer mit einem benutzerdefinierten Passwort zu erstellen. Ich habe versucht, diesen Code:Erstellen Sie grundlegende Rake-Aufgaben

namespace :users_create do 

    @passwd = 'trest333' 

    task create_users: :environment do 

    Rake::Task["create_cust:create_cust"].invoke 

    end 

    task :create_users, [:char] => :environment do |environment, args| 

    value = args[:char].to_s 

    if value.to_s.strip.length != 0 

     @passwd = value 

     Rake::Task["create_cust:create_cust"].invoke 

    end 
    end 

    task create_cust: :environment do 

    a = User.new 
     a.password = @passwd 
     a.save() 

     puts "password is #{@passwd}" 
    end 

end 

Aber wenn ich den Code mit diesem Befehl rake create_cust laufen: create_cust [some_new _pass] die Sitcom Passwort wird nicht verwendet. Wie kann ich die Variable @passwd überschreiben, wenn ich ein CLI-Argument sende?

Antwort

0

Wenn Sie zsh verwenden, müssen Sie Parameter wie folgt an Rake-Aufgabe übergeben: create_cust:create_cust\[some_new _pass\].

0

Ich denke, Sie sollten keine Kennwörter in der Befehlszeile angeben, da es in Ihrem Sitzungsverlauf gespeichert werden kann, was ein Sicherheitsrisiko darstellt. Ich empfehle, dass Sie eine Aufgabe erstellen, die den Benutzer nach den erforderlichen Informationen fragt, das Modell erstellt und ggf. Fehler meldet. Mein Ansatz wie folgt aussieht:

def prompt(message) 
    print(message) 
    STDIN.gets.chop 
end 

namespace :users do 
    task :create => :environment do 
    email = prompt('Email: ') 
    password = prompt('Password: ') 

    user = User.new(email: email, password: password) 
    unless user.save 
     STDERR.puts('Cannot create a new user:') 
     user.errors.full_messages.each do |message| 
     STDERR.puts(" * #{message}") 
     end 
    end 
    end 
end 

Je nach Bedarf, können Sie es durch nicht aufgefordert für Argumente auf der Kommandozeile (zum Beispiel E-Mail) angegeben erstrecken.

Verwandte Themen