Ruby Terminal Sorunu

Başlatan esC-Rx, 20 Nisan 2013 - 09:47:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

esC-Rx

Merhaba arkadaşlar ,
Ben ubuntuyu yeni yeni kullanıyorum 1 aydır falan . Ruby dilini öğreniyorum uzun zamandır sıkıntısız kullanıyordum ama şimdi terminale Ruby yazdığımda hiç bişey gelmiyor sıkıntı neyden kaynaklı acaba ?


pry da problem yok ama bunun neyden kaynaklandığını öğrenmek istiyorum.

ekremsenturk

ruby dosya-adı şeklinde deneyin. Sanırım İnteractive shell sadece Win ve OS/2 sürümlerinde var. Ruby 1.8 man belgesinin sonuna yakın bir bölümde o şekilde tarif eden bir kısım var

raspacı

irb yazarak ruby etkileşimini çalıştırabilirsin sanırım.
nereye gidersen git kendini de götürürsün.

osman.tuysuz

irb sorunsuzca çalışacaktır. Bende bi ara ruby çalışıyordum ve pry çalışmıyordu. Forumda soruyu sordum ve gerekli çözüm önerileri söylediler sağolsunlar ve pry'da çalışmaya başladı. Direk terminalde ruby yazdığın zaman çalışmaz. Önce programı yazdığın bir dosya gerekli. Örneğin test.rb adında dosya yazdın bunu çalıştırmak için terminale

ruby ters.rb    yazmalısın.

Kolay gelsin.
Hayatımdaki Değişiklik "UBUNTU" ve Açık Kaynak Kod

esC-Rx

İlginiz için teşekkürler evet direk ruby yazınca çalışmadığını anladım ama mesela elimde .rb dosyası mevcut onu yanına yazarak çalıştırdığımda hiç bir tepki olmuyor . İllaki komut satırından argüman mı alması gerek ki programın bize bir dönüş değeri versin  ? mesela arguman olarak ismimizi alan bir program oldugunu düşünelim.
ruby deneme.rb "emre"
dersek ismi yazdırsın bu şekilde oluyor ama komut satırından arguman almayan çalışmaları komut satırından ruby deneme1.rb şeklinde çalıştırdığımızda bir alt komut satırına geçiyor ve bir tepki göremiyorum bunu nasıl halledebilirim ?

ekremsenturk

#5
Bu sorun, dosyandaki kod'lar (işlemler) ile ilgilidir.
Örnek:
puts "merhaba"
puts "Naber"
puts "Günayndın"

Burada hiç bir arguman istemiyor.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 21 Nisan 2013 - 11:43:07

İlk cevabıma bir düzeltme yapayım:

Terninalden Ruby çalıştırmak için girilecek komut
ruby
ardından bir satır yazalım
puts "Merhaba"
şimdi alt satıra inelim ve ctrl + d tuşlarına birlikte basalım.

Veya

Doğrudan parametre ile Ruby'ye giriş yapabiliriz
ruby -e "puts ' Merhaba \n ' "
Çift tırnaklar ve tek tırnaklara dikkat edelim.

if

@esC-Rx, oluşturduğunuz .rb dosyasının başına #!//usr/bin/perl yazdınız mı?

esC-Rx

#7
Alıntı yapılan: ekremsenturk - 20 Nisan 2013 - 21:41:27Bu sorun, dosyandaki kod'lar (işlemler) ile ilgilidir. Örnek: puts "merhaba" puts "Naber" puts "Günayndın" Burada hiç bir arguman istemiyor.

Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 21 Nisan 2013 - 11:43:07

İlk cevabıma bir düzeltme yapayım: Terninalden Ruby çalıştırmak için girilecek komut ruby ardından bir satır yazalım puts "Merhaba" şimdi alt satıra inelim ve ctrl + d tuşlarına birlikte basalım. Veya Doğrudan parametre ile Ruby'ye giriş yapabiliriz ruby -e "puts ' Merhaba \n ' " Çift tırnaklar ve tek tırnaklara dikkat edelim.
Verdiğin bilgiler için teşekkür ederim ben pry ile çalışıyorum şimdi eclipse ruby eklentisi kurdum ordan devam edeceğim , mesela orda sınıf oluşturduk diyelim
class Kisi
attr_accessor :isim,:soyisim,:yas
def initialize(isim,soyisim,yas)
@isim=isim
@soyisim=soyisim
@yas=yas
end
end
en basitinden böyle bir kod yazdık diyelim ve terminalden "ruby kisi.rb " yazdık. Hiç * bir şey olmadan alt satıra geçiyor.Şimdi Ben  terminale ruby kisi.rb yazdıktan sonra K=Kisi.new("emre","xx",19) yazınca problem çıkacağını biliyorum işte benim terminalde kullanmak istediğim tek sorum bu :) anlatabildim mi bilmiyorum ama ben gvimde yada eclipse de kodumu yazıp konsola gelip pry yazdıktan sonra yazdığım kodu buraya yapıştırarak çalıştırmak oluyor bunu  nasıl halledebilirim :)

raspacı

#8
Dosyayı Ruby dosya.rb ile çalıştırırsınız ama kodlarınızda bir çıktı olmadığı için bir şey olmayacaktır görünürde.  Ancak irb ile etkileşime geçerseniz
load 'dosya.rb' ile dosyayı yükleyip istediğiniz işlemi yaparsınız.
leon@hal:~$ ruby deneme.rb
leon@hal:~$ irb
irb(main):001:0> load 'deneme.rb'
=> true
irb(main):002:0> K=Kisi.new("emre","xx",19)
=> #<Kisi:0x00000001f4df70 @isim="emre", @soyisim="xx", @yas=19>
irb(main):003:0>
irb(main):003:0> K.isim
=> "emre"
irb(main):004:0>




Eğer ruby dosya.rb ile çalışan bir şeyler arıyorsan sanırım kodlarını değiştirmen lazım. Mesela nette bir input/output programı var.

puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = Integer(a) + Integer(b)
puts c

Bunu ruby topla.rb ile çalıştırırsan senden sayıları ister sırayla ve toplar sonucunu. Bu koda bakarak sınıf uygulamanı geliştirebilirsin.
Not: ruby bilmem.
nereye gidersen git kendini de götürürsün.

esC-Rx

Anladım teşekkür ederim farklı çözümleri olan var mı ?

ekremsenturk

Buradaki sorun, dosyanın içerdiği kodların türünden kaynaklanıyor. Bir sınıf içerisindeki işlemleri çalıştırabilmek için, o işlemi bir başka dosya veya işlem üzerinden çağırmanız gerekiyor. Bu çağrıyı, sınıf dosyasının sonuna "end" satırından sonra ekleyipte deneyebilirsin.

Ruby bilmediğim için basit bir Basic örneği vereyim:

(Dikkat ! Ruby ile ilgisi yok)
210 CLASS meyve
220    SUB yardim_meyve()
230       PRINT "elma, armut, kiraz, uzum"
240    END SUB
250    SUB elma()
260       PRINT "Orta sertlikte ve kırmızı, sarı, yeşil renklerde bir meyve"
270    END SUB
280    SUB armut()
290       PRINT "orta sertlikte ve sarı ve yeşil renklerde bir meyve"
300    END SUB
310    SUB kiraz()
320       PRINT "Kırmızı ve sarı renklerde, küçük boy bir meyve"
330    END SUB
340    SUB uzum()
350       PRINT "Küçük boyutlu ve salkım halinde sulu bir meyve"
360    END SUB
370 END CLASS
380 uzum


Bu örnekte, sınıf alanının bitmesinden sonraki en son satırdaki "uzum" eki, sadece uzum() isimli işlemi başlatıyor. Hangi işlem çağrılırsa, o işlem çalışır.

Veya sınıf dosyasını Terminale yükledikten sonra, girilen herhangi bir nesne ismi, o nesne ile ilgili kodları başlatması gerekir.

Muhtemelen Ruby'de bu kadar basit değildir. Çağrı için de önce bir tanımlama gerekiyor olabilir. Ancak buna benzer bir şekilde işlemesi gerekiyor. Biraz deneyerek çözebilirsin diye düşünüyorum

esC-Rx

@ekremsenturk

Bilgi için teşekkürler biraz araştırmak gerekiyor az bakayım bulursam bende burda paylaşırım :)