SORU
22 Kasım 2010, PAZARTESİ


Komut satırı üzerinden Ruby komut dosyasına değişkenler geçmek

Windows Rubyİnstaller yükledim ve IMAP Sync koşuyorum ama hesapları sync yüzlerce kullanmam gerekiyor. Eğer komut satırı üzerinden bu değişkenler geçersem tüm süreç daha otomatize edebilirim.

# Source server connection info.
SOURCE_NAME = 'username@example.com'
SOURCE_HOST = 'mail.example.com'
SOURCE_PORT = 143
SOURCE_SSL  = false
SOURCE_USER = 'username'
SOURCE_PASS = 'password'

# Destination server connection info.
DEST_NAME = 'username@gmail.com'
DEST_HOST = 'imap.gmail.com'
DEST_PORT = 993
DEST_SSL  = true
DEST_USER = 'username@gmail.com'
DEST_PASS = 'password'

CEVAP
22 Kasım 2010, PAZARTESİ


Tekerleği yeniden icat etme; Ruby'nin şekilde serin kontrol OptionParser kütüphane.

İsteğe bağlı ya da zorunlu değerleri ile, tek seçenek haline parametre listeleri ayrıştırabilir/bayrak ayrıştırma sunmaktadır ve sizin için yardım oluşturabilir.

Eğer herhangi bir bilginiz geçirilen olmaktan çok statik ise, o da, ayrıştırılmış olur YAML dosyasına koy arasında çalışır değiştirmez. Bu şekilde komut satırı ve zaman zaman değiştiren şeyler kodu dışında yapılandırılmış her zaman değiştirmek şeyler olabilir. Veri ve kod ayırma bakım için güzel.

Burada oynamak için bazı örnekler:

require 'optparse'
require 'yaml'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: example.rb [options]"

  opts.on('-n', '--sourcename NAME', 'Source name') { |v| options[:source_name] = v }
  opts.on('-h', '--sourcehost HOST', 'Source host') { |v| options[:source_host] = v }
  opts.on('-p', '--sourceport PORT', 'Source port') { |v| options[:source_port] = v }

end.parse!

dest_options = YAML.load_file('destination_config.yaml')
puts dest_options['dest_name']

Eğer bu yerler oldukça statik ise örnek YAML dosyası:

--- 
dest_name: username@gmail.com
dest_host: imap.gmail.com
dest_port: 993
dest_ssl: true
dest_user: username@gmail.com
dest_pass: password

Bu kolayca YAML dosyası oluşturmak izin verir:

require 'yaml'

yaml = {
  'dest_name' => 'username@gmail.com',
  'dest_host' => 'imap.gmail.com',
  'dest_port' => 993,
  'dest_ssl'  => true,
  'dest_user' => 'username@gmail.com',
  'dest_pass' => 'password'
}

puts YAML.dump(yaml)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • vgeller1

    vgeller1

    22 Kasım 2009