[Çözüldü] Ruby Derleme veya Hazır Hale Getirme

Başlatan nebrix, 29 Nisan 2012 - 01:10:56

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

nebrix

Aranıza yeni katıldım, öncelikle herkese merhaba  :)

Ruby ve Gtk ile uygulama geliştiriyorum, aslında alışmaya çalışıyorum.Ancak uçbirimden
ruby program.rb
şeklinde çalıştırabiliyorum programı.Benim istediğim ise windows app gibi çift tıkladığımda çalışacak bir yapı nasıl elde ederim?
Tecrübesiz kullanıcıları düşünürsek bu yapı çok saçma.Başlatıcı ekleyerek bi sonuç elde ettim ancak istediğim tam olarak program.rb dosyamı bulunduğu dizin içinde tetikliyecek bir yapı.Bildiğimiz programlar gibi.

Teşekkürler

if

@nebrix, sağ tık>program ekle (sanırım buydu) diyerek istediğinizi yapabilirsiniz.

heartsmagic

Uygulamayı çalıştırılabilir yaparak bir bin dizinine alabilirsin. Örneğin /usr/bin Gerçi bu şart değil, çalıştırılabilir yapıp istediğin bir yere de koyabilirsin.
Ardından kendine ait bir .desktop dosyası yaparak çalıştırılacak dosyayı gösterebilirsin. Tabi burada önemli olan nokta şu, uygulama uçbirime ihtiyaç duyuyor mu duymuyor mu? Eğer duyacaksa .desktop dosyasında bunu da belirtirsin.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

nebrix

Alıntı yapılan: heartsmagic - 29 Nisan 2012 - 02:27:31
Uygulamayı çalıştırılabilir yaparak bir bin dizinine alabilirsin. Örneğin /usr/bin Gerçi bu şart değil, çalıştırılabilir yapıp istediğin bir yere de koyabilirsin.
Ardından kendine ait bir .desktop dosyası yaparak çalıştırılacak dosyayı gösterebilirsin. Tabi burada önemli olan nokta şu, uygulama uçbirime ihtiyaç duyuyor mu duymuyor mu? Eğer duyacaksa .desktop dosyasında bunu da belirtirsin.

Açıkcası nasıl .desktop dosyası oluştururum bilmiyorum.C# ile windows app geliştirdim ve 1 haftadır linux kullanıcısıyım.Genel işlemlerimi yapsamda bu konulara yabancıyım.mesela;

puts "Ben Çalışıyorum"

gibi basit bir kod bloğunu pogram.rb olarak çalışabilir hale getirsek hem örnek olsa hem de linux 'e güzel bir giriş yapsam eğer zamanınız varsa...

not: .destop dosyasından kastınız kısayol başlatıcı ise yaptım ve ruby uçbirime ihtiyaç duyuyor.ben exe dosyası gibi çalışan hale getirmek istiyorum.birisi download etti varsayalım.tıklasın ve çalışsın :)

sem

Başlatıcı işe yaramadı mı? Neden memnun kalmadınız acaba?

Hoş geldiniz bu arada
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

nebrix

Başlatıcı işe yaradı ve kendi ubuntu'mda çok memnunum.Ancak program.rb orda duruyor ve tıkladığınızda metin editörü kodlarımı açıyor.Sanırım ben açamadım konuyu.ben masaüstü başlatıcıya ruby "dosya yeri" komutu verdim ve ruby komutuyla program çalışıyor ama kaynak kodlarım ortada.Ayrıca bir başkası kullanmak istese göndereceğim dosya program.rb dosyası, elimdeki program.rb dosyasını çalıştırılabilir ,kaynak kodu gözükmeyen ve her bilgisayarda çalışır hale nasıl getiricem?

Hoşbuldum :)

sem

Ruby yorumlanan bir dildir. Windows'ta çift tıklayarak çalıştırdığınız ikilik dosyalar ise derlenen diller ile yazılan dosyalar. Yani ayrıca bir yorumlayacıya ihtiyaç duymuyorlar.  Fakat yorumlanan dillerde bir yorumlayıcı olmak zorundadır. Bu durumda ruby ile yazıdğınız uygulamanın çalışacağı bilgisayarda Ruby yorumlayıcısı bulunmak zorunda olacaktır. Burada yorumlayıcı "ruby" komutu ile çalışan dosyadır. Bildiğim için Python'dan devam edeyim; mesela PYthon ile bir uygulama yazdım diyelim.  Aynı bahsettiğiniz gibi python app.py ile çalıştırabiliyorum. Kodlar app.py dosyası içerisinde duruyor ama python app.py şeklinde çalıştırabiliyorum. Çünkü derlenen bir dil değil. app.py içerisindeki kodlar Python tarafından çalışma zamanında yorumlanıyor. Ruby'de de aynı şey geçerli. Bu durumda kodlar o anda yorumladığı için yorumlayıcı olmadan hiç bir bilgisayarda çalışmayacaktır. Olanlarda ise python app.py zaten işe yarayacaktır.

NOT: Bu işin olağan kısmı, fakat Python dosyasından derlemem yapabilmek mümkün olabiliyor istenildiği takdirde. Fakat bu varsayılan bir şey değil, aslında dilin olağan yapısına da aykırı bir durum ama evet yapılabiliyor. Çok büyük ihtimalle ruby için de yapılabilecektir sanıyorum.

http://www.google.com.tr/search?aq=1&oq=compile+ru&sourceid=chrome&ie=UTF-8&q=compile+ruby+code

ile araştırmak gerekecektir =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

nebrix

peki şöyle desem.phyton'dan devam etsek, evet dediğiniz gibi yorumlayıcıya phyton program.py diyoruz ve yorumluyor.peki bu program.py dosyamızın yanına bu dosyayı otomatik olarak yorumlatacak bir betik koyamazmıyız.yani o betik bulunduğu dizin içindeki program.py dosyamızı yorumlatacak.bu saat dakika oldu google search başındayım ama nafile : )

ct

http://patshaughnessy.net/2012/2/15/is-ruby-interpreted-or-compiled

Burada bytecode'a nasıl çevirileceğini anlatmış. Bir kaç yöntem göstermiş.

sem

@nebrix

Kodu ya derleyerek byte code a çevirerek yorumlayıcıdan kurtarmanız gerekecek, bu durumda ayrıca bir yorumlama işine gerek kalmamış olacak, böyle uygulamalar mimarisi ile uyuşan her sistemde çalışabilecek.

Ama derseniz ki kodlar bu hali ile dosyada kalsın ama ben bir betik ile yorumlatayım Python'u baştan yazmanız gerekecektir =) Düşünün bir sistemde python kodu çalıştıracağız ama sistemde python yok. O zaman kodu kim yorumlayacak? Sistemde python var ise zaten sorun yok. Bu zaten sizin yaptığınız şekilde oluyor; başlatıcı, .desktop dosyası oluştururarak içerisine kodu yazıyoruz python program.py gibi. Çift tıklanınca bu komut çalıştırılıyor.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

nebrix

#10
Tüm cevaplar için teşekkür ettim.O zaman bu yapıda , ben doğru kullanıyorum ve düşündüklerim hayal ürünüm :) Ruby ve phyton'a burda veda etmem gerekecek.Güzel araçlar yazıp,web siteme koyucam sonra bu araçlar ruby veya phyton yazılmış * olacak ve ben dicem ki kullanıcak arkadaşlara; programlar çalışıyor ama önce yorumlayıcıları kurun, sonra bi .desktop başlatıcı kurun ve çalıştırın.Ben çok popüler olmadığı sürece böyle bir işlemle uğraşmazdım.bunu otomatikleştiren bir yapı olmalı.gerekli paketleri içine atabileceğim, .desktop dosyasını otomatik oluşturabileceğim.Belki de var ama ben bilmiyorum.Forum içinde paket hazırlamaktan bahsedilmiş 
Alıntı Yaphttp://forum.ubuntu-tr.net/index.php?topic=24078.0
bu bir deb paketiymiş. applications dizinine .desktop dosyasını atıyor, share dizinine de program.rb veya phyton'sa program.py dosyasını ve işlem tamam.sanırım istediğim tam olarak bu.

Peki burada bu işlemleri yaptıran kodlar nedir?  bash dili mi? bu syntax'ı parça parça anlatabilir mi bilen bir üstadımız?

Özet: Benim yorumlayıcıyla hiç bir sıkıntım yok :) benim derdim otomatikleştirecek bir yapıyla veya taşınabilirlikle diyebiliriz.şuan linux'te c 'de kullansam sanırım nasıl .deb paketi oluşturucaz bilmek lazım.Net'te ruby diliyle ilgili bu çok sorulmuş ama cevabı yok. ubuntu-tr bunu anlatacak ilk yer olacak.

Ek bilgi: Mesela gerekli kütüphaneleri de control doyasında Depends: kısmında bilgiriyormuşuz.Mesela benim uygulamam ruby 1.9.1 ve libgtk2 istiyor. Bu forum faydalı olacak.Bilgili üstadlardan yardım bekliyorum.

sem

Şöyle olabililir; varsayılan olarak Python kurulu olmayan sistemler için kurulum önerirsiniz. Örneğin ubuntuda zaten python kurulu geliyor. .desktop uzantısını da bir kurulum dosyası ile siz yaparsanız pek sorun olmaz gibi =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

nebrix

Çok haklısınız..Bu başlık altında herkes doğru bilgiler paylaştı ama işte o kurulum dosyasının nasıl oluşturacağımı anlatırmısınız :) ruby veya phyton gibi yorumlanan dillerde uygulama yapanlar için yol gösterici olur.

sem

Kurulum dosyaları sistemden sisteme farklılık gösterecektir. Debian tabanlı tüm dağıtımlar için;

http://forum.ubuntu-tr.net/index.php?topic=22597.msg285020#msg285020
http://forum.ubuntu-tr.net/index.php?topic=24078.0
http://forum.ubuntu-tr.net/index.php?topic=8860.0

Kurulum dosyasındaki bilinmesi gereken mantık hangi dosyanın nereye koyulacağını bilmek aslında. Bu işlemi bildikten sonra bash komutları ile kendiniz de sistem bağımsız bir kurul hazırlayabilirsiniz... Linux  kurulumlarında kullanılan make dosyaları gibi.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Nisan 2012 - 16:56:02

BAşlıklarda desktop dosyası oluşturma da anlatılıyor.


Kolay gelsin...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

ekremsenturk

#14
Bugün merak ettiğim için bir İnternet Caffe'de Microsoft Small Basic'i denedim. Ms Small Basic'in kendisini ve programlarını çalıştırabilmek için sistem'de Netframework 3.5 SP1 kurulu olması gerekiyor. C# için de aynısı geçerli. C# program'larını Netframework'un uyumlu sürümü kurulu olmayan Bilgisayar'larda çalıştıramazsınız. Sistem .EXE dosyasını tanımıyor.

Ms Small Basic ile derlenen program'ın çalışabilmesi için, program ile birlikte aynı dizinin içinde bir de bir .DLL dosyasının bulunması gerekiyor. DLL dosyasını sildiğimde yine program Netframework'e rağmen çalışmadı.

Python ve Ruby içinde aynısı geçerli. Sistem'de Python kuruluysa, Linux'ta Python programının (Dosyanın) ilk satırına #!/usr/bin/env python ekliyorsun ve dosyayı çalıştırılabilir bir dosya olarak işaretliyorsun. Dosyayı tıkladığında, çalıştırma seçenekleri sunulacaktır. Dosya grafik içermiyorsa, sadece uçbirimden çalıştır seçeneği ile çalışacaktır. Sistem'in dosya ayarlarından, çalıştırılabilir dosyaları sormadan çalıştır seçiliyse, doğrudan çalışır.

Derlenmiş dosyalar içinde aynısı geçerlidir. Grafiksel bir program değilseler, uçbirimden çalıştırılırlar. Sadece Grafiksel bir arayüze sahip dosyalar (Linux'ta önce çalıştırılabilir dosya olarak işaretlenmiş olmaları gerekiyor) tıklandığında kendiliğinden çalışırlar. Bunu sağlayan ise Windows'ta Ms Small Basic örneğindeki gibi DLL dosyalarıdır veya Linux'ta genellikle .so uzantılı olan ELF dosyaları bu işi yapar. Bu dosyalar, ya çalıştırılabilir dosya ile aynı klasörde, veya Sistem'de kurulu olmak zorundalar.

Kısacası, derlenmiş program'larıda, gerekli DLL veya ELF dosyaları kuruluysa, İşletim sistemi çalıştırıyor. Gerçekten kendiliğinden çalışabilen bir dosya yok gibi. Ben bir örneğini görmedim. Sadece kullanıcı bu dosyaları kendiliğinden çalışıyormuş gibi algılar. Programlama, Manipulasyondur.

travego0403

@ekremsenturk
Bahsettiğiniz .dll ve .so dosyaları kütüphane dosyalarıdır. Benim bildiğim kadarıyla sizin bahsettiğiniz komut satırından çalışmasıyla veya grafiksel bir arayüz açılması ile ilgisi yoktur. Yazdığınız program içerisinden bu kütüphanelere çağrı yapılmış, kullanılmış ve statik/dinamik olarak bağlanmış olabilir. Bu yüzden de programın bu kütüphaneler olmadan çalışmaması kadar doğal bir şey yoktur. Program çalıştırılmak istendiğinde gerekli kütüphaneleri arar(bağlanma ve kütüphane şekline göre statik veya dinamik). İşletim sisteminin kütüphaneleri tuttuğu dizine veya programın çalıştığı dizine bakar. Eğer her şey yolundaysa program çalıştırılır.

Şimdi gerekli olan bir grafiksel arayüz kütüphanesi ise dediklerinizin bir kısmı doğru olur.(GTK, QT, OpenGL gibi). Ama bu programı derlediğiniz zaman kendi bilgisayarınızda çalışacaktır. Fakat bu kütüphanelerin kurulu olmadığı bir bilgisayarda gene çalışmayacaktır. Ama yinede programın konsol tabanlı veya grafiksel olması ile alakası yoktur. Zaten Linux paketleme sistemlerinin en çok zorlandığı nokta burasıdır bence. Çünkü Linuxta kütüphaneler ortak kullanımdadır. Bir kütüphanenin bir sisteme bir defa kurulması yeterlidir. Bu kütüphaneye ihtiyacı olan yeri bellidir gider kullanır. Fakat Windows İşletim sisteminde ise hemen hemen her program kendi kütüphaneleri ile gelir. Bu yüzden de programların boyutları çok fazladır.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

nebrix

#16
@ekremsenturk
kesinlikle sorduğum buydu.çalıştırılabilir yapmak için  #!/usr/bin/env python eklemek, bütün phyton kütüphanesi olan bilgisayarlarda çalışacak yani.doğru mu anladım?

@ travego0403
üstadım haklsınız ama benim tam olarak kastettiğim bir dosyayı çalışabilir yapmaktı.phyton ya da ruby... yani @ekremsenturk arkadışımızın dediği yolla ,bilgisayarda kütüphaneler yüklüyse tıklayınca çalışır mı?

.deb paketi ile dağıtmayı düşündüğümüzde elbette zorunlu kütüphaneleri ekliycez depends'den ama ben desktop dosyası oluşturmadan yukarıdaki #!/usr/bin/env python metoduyla kaynak dosyama tıkladığım an çalıştırılabilir yapabilir miyim?

cevaplarınız için teşekkürler.

linux'e yeni geçmeme rağmen çok çabuk ısındım sayenizde, artık ubuntu üzerindeyim sürekli :)

elbette bi de ruby için ne eklemeliyiz dosyanın başına ? :)

ekremsenturk

#17
@nebrix
Python veya benzeri programlama dillerinde programların tıklamayla çalıştırılabilmesi için Python veya Ruby diğer Bilgisayarda kurulu olması gerekir. Ve tabii çalıştırılacak dosyanın çalışabilir dosya olarak işaretlenmiş olması gerekiyor. (Python kodları bytecode olarak derlenmiş olsa dahi.) Ruby kurulu olmayan bir Bilgisayar'da Ruby ile yazdığınız bir programı çalıştırmak istediğinizde, Sistem Ruby bulunamadı hatası verir.

Sadece kütüphanelerin kurulu olmasının yeterli olduğu durumlar, ikili (Binary) olarak derlenmiş programlar için geçerli. Bunlar C/C++ programları oluyorlar.

Java ve C# ise kendi altyapıları üzerinde çalışıyorlar.

@travego0403
.DLL ve .so (yani kütüphaneler) ile anlatmak istediğim ise, ikili dosyalarında, tamamen bağımsız bir şekilde çalışan dosyalar olmadığı. Belki @nebrix, C# programlarının veya Windows ortamında kullanılan .EXE (gerçek adı PE) dosyalarının tamamen bağımsız çalıştığını algılıyor olabileceğini düşünerek. Gereksiz detaylara girmişim sanırım.

nebrix

Bütün mantığını irdelemiş olduk yorumlanan dillerin.Şimdi de tecrübeli bir abimiz ;

def hello(name)

puts "Hello " + name

end

name= "nebrix"

hello(name)


basit ruby kodumuzun başına çalıştırılabilir işaretlemek için kod eklerse, deneriz ve Çözüldü işaretleriz.
artık yorumlanan dilleri sevmeye çok yakınım.

@ekremsenturk

ustam derinlemesine inceliyecek bilgide değilim ancak ruby ile yazılmış programı .deb paketi haline getirmeyi ve gerekli paketlerin depends kısmında tanımlandığını gördüm.mantığını anladım.linux'e ve yorumlanan dillere yabancıyım.Yukarıda ki ruby kodunu copy paste yapıp, başına çalıştırılabilir işaretlemek için kod bloğu eklersek, konu çözülmüş olacak.Burda öğrenecek çok şey var

sem

 #!/usr/bin/env python

eklemek dosyayı çalıştırılabilri dosya olarak işaretlemek. Dosyayı çalıştırılabilr olarak işaretlemek için;

chmod +x app.py

komutu ile dosyaya X hakkı yani çalıştırılabilme hakkı vermeniz gerekir. Ya da  sağ tuş ile özelliklerden olması lazım "Uygulama gibi çalışmasına izin ver" gibi bir seçenek olması lazım.

#!/usr/bin/env python

komut çalışan dosyayın hangi uygulama ile çalışacağını belirtir. Yani burada uygun Pytyhon'u çalıştır gibi söylem var diyebiliriz. Bu durumda uygulama çalıştırma komuıtu ruby ise

#!/usr/bin/env ruby yazmak gerekecektir sanıyorum. Örneğin aşağıdaki şekilde deneyebilirsiniz env'nin ne işe yaradığını

/usr/bin/env deluge
/usr/bin/env  vlc
/usr/bin/env pidgin

ya da yüklü olan herhangi bir uygulamayı deneyebilirsiniz. Yani buradaki /usr/bin/env kısmı Python'a özel bir şey değil. Burada Python'a özel olan kısım #! kısmı. Bu kısmın ruby'de neye karşılık geldiğini bilmeniz/bulanız yeterli.

Eğer .desktop dosyası oluşturmayı inceledi iseniz buna gerek olmadğını da biliyorsunuzdur.


http://forum.ubuntu-tr.net/index.php?topic=24078.msg289723#msg289723

başlığındaki

"Exec=islematik" kısmını araştırırsanız istediğinizi elde edeceksiniz zaten.

Kolay gelsin.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

ekremsenturk

#20
Unix ve Unix benzeri system'lerde bir dosyanın hangi uygulamaya ait olduğunu, İşletim sistemi dosyanın ilk satırından okur ve dosyayı ait olduğu uygulama ile başlatır.
Ruby için bu satır #!/usr/bin/ruby veya #!/usr/local/bin/ruby veya bildiğim kadar sadece Linux'ta #!/usr/bin/env ruby olabilir.

" # " Unix ve türevlerinde genel olarak okunmayacak satırlar için kullanılır.   "  !  " ise hayır veya değildir anlamında kullanılır.  "  #! " ise okunmayacak olmasını red eder.
"env" ise bir programdır. Ruby, başka bir Bilgisayarda sizin bilgisayar'ınızdan farklı bir dizine kurulmuş olabilir. "env" ise "/usr/bin/" dizininde kuruludur ve env ile Ruby (veya hangi diğer program bir boşluk ara ile satıra eklenmiş ise) sistem'de kurulu olabileceği yerlerde aranır, bulunur ve çalıştırılır. "env" program'ınızın başka linux kurulu Bilgisayar'lardada, sizinkinden daha farklı bir yapılandırmaya sahip olsada, çalışmasını sağlar. ( Env Bir kolaylıktır.)

Bir dosyayı çalıştırılabilir olarak işaretlemenin en kolay yolu, dosyayı sağ tıklayıp, özellikler'den yetkiler bölümüne geçip "Bir program gibi çalışsın", veya bazen farklı bir arayüz çıkar ve kullanıcılar için farklı yetkiler arasından "çalıştırılabilir"(Executable) kutucuklarını işaretlesiniz.

Diğer Bilgisayar'da ruby kurulu olmasa bile artık kullanacak kişi aldığı "Ruby bulunamadı" veya "Ruby kurulu değil" hatasından dolayı, Programı çalıştırabilmek için, Ruby diye bir şey daha kurması gerektiğini anlayacaktır. Üstelik Ubuntu böyle bir durumda, kullanıcıya Ruby'yi Uçbirim'den nasıl kurabileceğinide bildiriyor.

Ubuntu paketleri arasında "Programing Ruby" adında bir (İngilizce) dokuman'da bulunuyor. sudo apt-get install rubybook komutu ile kurabilirsiniz. /usr/share/doc/rubybook/html/index.html yolunu izleyerek, Firefox ile açabilirsiniz.

Masaüstüne, index.html dosyasına bir kısayol eklemek daha kullanışlı olur.

nebrix

Evet , @ekremsenturk arkadaşıma çok teşekkür ederim.konuya son noktayı koyuyorum.

#!/usr/bin/env ruby
require 'gtk2'
def merhaba(bir_pencere)
puts "Merhaba dünya!"
end

def delete_event(bir_pencere,bir_olay)
puts "delete olayı oluştu"
return false
end

Gtk.init

pencere= Gtk::Window.new( Gtk::Window::TOPLEVEL )
pencere.set_title( "SÜper bişey :D" )
pencere.set_border_width(10)
pencere.signal_connect("delete_event") {delete_event(nil,nil)}
pencere.signal_connect("destroy"){destroy(nil)}

dugme = Gtk::Button.new("Merhaba")
dugme.signal_connect("clicked"){ merhaba(nil)}

pencere.add(dugme)
dugme.show
pencere.show

Gtk.main


bu program merhaba yazan bir buton üretiyor.İncelersek; en başa #!/usr/bin/env ruby ekledim ve programımı yazdım ve daha sonra merhaba.rb olarak kaydettim.
Sonra sağ tuş->Özellikler->Erişim hakları diyerek altında çalışabilir olarak işaretle dedim.Artık uygulamamız tıkladığımızda çalışıyor. ve .deb paketi hazırlamadan ruby yüklü her linuxte çalışacaktır.

Saygılar.  ;D