Saya telah menginstal RubyInstaller di Windows dan saya menjalankan IMAP Sync tetapi saya harus menggunakannya untuk menyinkronkan ratusan akun. Jika saya bisa meneruskan variabel-variabel ini ke sana melalui baris perintah saya bisa mengotomatiskan seluruh proses dengan lebih baik.
# Source server connection info.
SOURCE_NAME = '[email protected]'
SOURCE_HOST = 'mail.example.com'
SOURCE_PORT = 143
SOURCE_SSL = false
SOURCE_USER = 'username'
SOURCE_PASS = 'password'
# Destination server connection info.
DEST_NAME = '[email protected]'
DEST_HOST = 'imap.gmail.com'
DEST_PORT = 993
DEST_SSL = true
DEST_USER = '[email protected]'
DEST_PASS = 'password'
ruby
command-line
Kilat
sumber
sumber
Jawaban:
Sesuatu seperti ini:
kemudian
atau
sumber
#!/usr/bin/env ruby
di atas.rb
file untuk dapat menjalankannya seperti ini:./test.rb
Jangan menemukan kembali roda; lihat pustaka OptionParser Ruby yang keren .
Ia menawarkan penguraian flag / switch, parameter dengan nilai opsional atau yang diperlukan, dapat mengurai daftar parameter menjadi satu opsi dan dapat menghasilkan bantuan Anda untuk Anda.
Juga, jika ada informasi Anda yang dilewatkan cukup statis, itu tidak berubah antara berjalan, memasukkannya ke file YAML yang diuraikan. Dengan begitu Anda dapat memiliki hal-hal yang berubah setiap kali pada baris perintah, dan hal-hal yang berubah sesekali dikonfigurasi di luar kode Anda. Pemisahan data dan kode itu bagus untuk pemeliharaan.
Berikut beberapa contoh untuk dimainkan:
Ini adalah contoh file YAML jika tujuan Anda cukup statis:
Ini akan membuat Anda dengan mudah menghasilkan file YAML:
sumber
ARGV
hanya berisi operan, jika ada (yaitu, argumen yang tersisa, opsi NON-opsi).Sayangnya, Ruby tidak mendukung mekanisme passing seperti misalnya AWK:
Ini berarti Anda tidak dapat meneruskan nilai yang disebutkan ke dalam skrip Anda secara langsung.
Menggunakan opsi cmd dapat membantu:
Ruby menyimpan semua argumen cmd dalam
ARGV
array, nama script itu sendiri dapat ditangkap menggunakan$PROGRAM_NAME
variabel.Kerugian yang jelas adalah bahwa Anda bergantung pada urutan nilai.
Jika Anda hanya perlu sakelar Boolean gunakan opsi
-s
juru bahasa Ruby:Harap perhatikan
--
sakelar, jika tidak, Ruby akan mengeluh tentang opsi yang tidak ada-agreed
, jadi serahkan sebagai sakelar ke cmd invokation Anda. Anda tidak membutuhkannya dalam kasus berikut:Kerugiannya adalah bahwa Anda mengacaukan variabel global dan hanya memiliki nilai true / false logis.
Anda dapat mengakses nilai dari variabel lingkungan:
Kerugian hadir di sini untuk, Anda harus mengatur semua variabel sebelum permintaan skrip (hanya untuk proses ruby Anda) atau untuk mengekspornya (kulit seperti BASH):
Dalam kasus terakhir, data Anda akan dapat dibaca untuk semua orang di sesi shell yang sama dan untuk semua subproses, yang bisa menjadi implikasi keamanan yang serius.
Dan setidaknya Anda dapat menerapkan parser pilihan menggunakan getoptlong dan optparse .
Selamat melakukan peretasan!
sumber
Anda juga bisa mencobanya
cliqr
. Cukup baru dan dalam pengembangan aktif. Tetapi ada rilis stabil yang siap digunakan. Inilah repo git: https://github.com/anshulverma/cliqrLihatlah ke dalam folder contoh untuk mendapatkan ide tentang bagaimana itu dapat digunakan.
sumber
Jalankan kode ini pada baris perintah dan masukkan nilai N:
sumber
Kecuali itu adalah kasus yang paling sepele, hanya ada satu cara yang waras untuk menggunakan opsi baris perintah di Ruby. Itu disebut docopt dan didokumentasikan di sini .
Apa yang luar biasa dengan itu, adalah kesederhanaannya. Yang harus Anda lakukan adalah menentukan teks "bantuan" untuk perintah Anda. Apa yang Anda tulis di sana akan di-parsing secara otomatis oleh perpustakaan ruby mandiri !
Dari contoh :
Hasil:
Nikmati!
sumber
Anda harus mencoba permata console_runner . Permata ini membuat kode Ruby murni Anda dapat dieksekusi dari baris perintah. Yang Anda butuhkan hanyalah menambahkan YARD annotations ke kode Anda:
Kemudian jalankan dari konsol:
sumber
tl; dr
Saya tahu ini sudah tua, tetapi getoptlong tidak disebutkan di sini dan mungkin cara terbaik untuk mengurai argumen baris perintah hari ini.
Mengurai argumen baris perintah
Saya sangat merekomendasikan getoptlong . Ini cukup mudah digunakan dan bekerja seperti pesona. Berikut adalah contoh yang diambil dari tautan di atas
Anda bisa menyebutnya seperti ini
ruby hello.rb -n 6 --name -- /tmp
Apa yang OP coba lakukan
Dalam hal ini saya pikir pilihan terbaik adalah menggunakan file YAML seperti yang disarankan dalam jawaban ini
sumber