[quote=Risus]balinski Twój sposób niestety nie zadziałał.
Instalowanie bibliotek niestety na razie odpada, bo nie działam u siebie, a na shellu.[/quote]
pracując na shellu możesz doinstalować gem lokalnie i uzywać go.
[quote=Risus]To jeśli odniosę się do danego elementu tablicy, to już działa:
admini = []
admin = File.open("admini.txt", "r")
admin.readlines.each { |l|
admini << l
}
admin.close
if admini[0].include?($1) then
puts "Odezwał się admin."
Niestety takie rozwiązanie odpada.[/quote]
Zdecydowanie odpada. Co Ci proponuję zrobić?
Uruchom konsolę interaktywną, irb i wpusuj po kolei komendy. Albo do swojego kodu dopisz
puts admini.inspect
if admini[0].include?($1)
“działa”, bo sprawdzasz czy pierwszy na liście admin się zalogował
tak naprawdę wykonujesz:
"admin\n".include?("admin")
Co jest prawdą. Spróbuj podać nazwe innego admina i nie przejdzie. Tak jak pisaliśmy Ci wcześniej, użyj metody chop na każdym stringu.
Poza tym można to zapisac krócej, jak już cube mnie poprawił:
admins = File.open("admins.txt", &:readlines).map(&:chop)
Rada na przyszłość. Używaj IRB i najczęsciej jak się da inspektuj obiekty, wyniki działania metod: np.
$ irb
IRB initialized!
irb(main):001:0> File.open("admini.txt")
=> #<File:admini.txt>
irb(main):002:0> File.open("admini.txt", &:readlines)
=> ["sevos\n", "root\n", "admin\n"]
irb(main):003:0> File.open("admini.txt", &:readlines).map(&:chop)
=> ["sevos", "root", "admin"]
irb(main):004:0>
Możesz zapytać, czym jest “magiczny” zapis &:readlines. Jest to skrócony zapis bloku:
File.open("admini.txt") { |f| f.readlines}
File.open("admini.txt", &:readlines)
obie powyższe linijki znaczą to samo. Więcej dowiesz się googlając za hasłem “symbol to proc”. Ale powiedzmy, że to taki bajer 