Skip to content

Commit

Permalink
SH-7 SH-8 Typo fixed and review again
Browse files Browse the repository at this point in the history
  • Loading branch information
Onur Ozgur OZKAN committed Apr 25, 2014
1 parent 922af47 commit 11bfbcb
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 134 deletions.
140 changes: 6 additions & 134 deletions source/posts/2014-04-20-rabbitmq.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,17 @@ Kurulum ve örneklere geçmeden önce RabbitMQ ve mesajlaşma ile ilgili bir ka
* **Queue**, mesajların biriktiği havuzdur. Bir nevi mailbox gibi düşünülebilir.
* **Consumer**, mesajı alan taraftır. `C` ile gösterilir.

NOT: Producer, Queue ve Consumerlar aynı makine üzerinde olmak zorunda değildir.
NOT:

Bu örneği Ruby dilinde yapacağız. RabbitMQ'nun Ruby Client'ı olarak [Bunny](http://rubybunny.info/)'i gemini kullanabiliriz. Bunny'i kurmak için `gem install bunny` demeniz yeterlidir.
* Producer, Queue ve Consumerlar aynı makine üzerinde olmak zorunda değildir.
* Producer ve Consumerlar aynı programlama dili ile yazılmak zorunda değildir.

## Kurulum

Bu makalede sadece OSX için Homebrew ile kurulumu anlatılacaktır. İleri tarihde belki Ubuntu sunucularda eklenebilir.

Bu örneği Ruby dilinde yapacağız. RabbitMQ'nun Ruby Client'ı olarak [Bunny](http://rubybunny.info/)'i gemini kullanabiliriz. Bunny'i kurmak için `gem install bunny` demeniz yeterlidir.

### OSX'e Homebrew ile kurulumu

```bash
Expand Down Expand Up @@ -85,7 +88,7 @@ rabbitmq-server

Eğer `rabbitmq-server` komutunu OSX bulamadı ise `$PATH`'nizde `/user/local/sbin` tanımlı olmayabilir. `echo $PATH` komutu ile olup olmadığını kontrol edebilirsiniz. Eğer yoksa `/usr/local/sbin`'i `$PATH`'inize eklemelisiniz çünkü Brew RabbitMQ'yu oraya kurmaktadır.

RabbitMQ'u serverı çalıştırdıktan sonra `http://localhost:15672/` adresinden yönetim paneline girebilirsiniz. Varsayılan ayarlarda aynı makineden bağlanabilmesi kaydı ile `guest` kullanıcı ismi ve `guest` şifresi ile bir kullanıcı tanımlanmıştır.
`rabbitmq-server` komutunu çalıştırdıktan sonra `http://localhost:15672/` adresinden yönetim paneline girebilirsiniz. Varsayılan ayarlarda aynı makineden bağlanabilmesi kaydı ile `guest` kullanıcı ismi ve `guest` şifresi ile bir kullanıcı tanımlanmıştır.

* URL : http://localhost:15672/
* Kullanıcı adı : guest
Expand All @@ -95,137 +98,6 @@ Geliştirme ortamımızı kurduğumuza göre RabbitMQ sitesinde bulunan [altı a

Saygılar.

## Örnek 1 - Merhaba Dünya

Şimdi basit bir 'Merhaba Dünya' uygulaması ile RabbitMQ'da ilk mesajımızı gönderecek ve alacağız. Aşağıdaki grafik yapılacak işlemi gösterecektir.

![Örnek 1](articles/2013-04-20-rabbitmq-1.png)

**Mesajın gönderilmesi**

* RabbitMQ'ya bağlanmak için

```ruby
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start
```

* Yeni bir kanal yaratmak için

```ruby
ch = conn.create_channel
```

* Yaratılan kanaldan bir queue isimlendirip mesaj göndermek için

```ruby
q = ch.queue("hello")
ch.default_exchange.publish("Hello World!", :routing_key => q.name)
puts " [x] Sent 'Hello World!'"
```

* Bağlantıyı kapatmak için

```ruby
conn.close
```

* Hepsini birleştirip `sender.rb` dosyasını oluşturalım.

```ruby
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch = conn.create_channel

q = ch.queue("hello")
ch.default_exchange.publish("Hello World!", :routing_key => q.name)
puts " [x] Sent 'Hello World!'"

conn.close
```

**Mesajın alınması**

* RabbitMQ'a bağlanmak, yeni bir kanal açmak ve kuyruğu tanımlamak için

```ruby
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch = conn.create_channel
q = ch.queue("hello")
```

* Mesajları dinlemek için `Bunny::Queue#subscribe` methodu kullanılır.

```ruby
begin
puts " [*] Waiting for messages. To exit press CTRL+C"
q.subscribe(:block => true) do |delivery_info, properties, body|
puts " [x] Received #{body}"
end
rescue Interrupt => _
conn.close
exit(0)
end
```

* Hepsini birleştirip `receiver.rb` dosyasını oluşturalım.

```ruby
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch = conn.create_channel
q = ch.queue("hello")

begin
puts " [*] Waiting for messages. To exit press CTRL+C"
q.subscribe(:block => true) do |delivery_info, properties, body|
puts " [x] Received #{body}"
end
rescue Interrupt => _
conn.close
exit(0)
end
```

**Terminalden dosyaları çalıştıralım.**

Unutmayın ayrı ayrı sekmelerde çalıştıracaksınız!

```bash
$ ruby -rubygems send.rb
$ ruby -rubygems receive.rb
```

Sonuçları terminal çıktılarından görebileceğiniz gibi `http://localhost:15672/` adresinden veya terminalden `rabbitmqctl list_queues` kodu ile de görebilirsiniz.

Bundan sonraki makalemiz RabbitMQ ve iş kuyrukları üzerine olacaktır.

Saygılar.

### Kaynaklar

* [http://en.wikipedia.org/wiki/RabbitMQ](http://en.wikipedia.org/wiki/RabbitMQ)
Expand Down
69 changes: 69 additions & 0 deletions source/posts/2014-04-22-rails-view-helpers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: Rails View Helpers With Haml
date: 2014-04-22
author: onurozgurozkan
tags: rails, view helpers, haml, en
---

Our marketting department recorded a lot of [tutorial](http://www.youtube.com/user/Bulutfon) [videos](https://vimeo.com/bulutfon) at last week. They want to link to related videos at related pages. Let's do this with a clever way.

This is our sample haml code block which shows icons and link to videos. As you see there are dublicate codes.

This comment has been minimized.

Copy link
@baygunm

baygunm Apr 25, 2014

Contributor

Correct usage: duplicate

This comment has been minimized.

Copy link
@onurozgurozkan

onurozgurozkan Apr 25, 2014

Fixed.


```haml
- content_for :toolbar do
= link_to 'Vimeo', 'https://vimeo.com/92406233', target: '_blank'
= link_to 'Youtube', 'http://www.youtube.com/user/Bulutfon', target: '_blank'
```

There is a `helpers` directory in app folder and we write our custom view helper there.


````
app/
assets/
controllers/
helpers/ <-- HERE
mailers/
models/
views/
```
Let's create our custom helper.
```ruby
# app/helpers/app_custom_helper.rb
module AppCustomHelper
def video_link title, url
capture_haml do
haml_concat link_to title, url, target: '_blank'
end
end
end
```
Now you can use view helper in your haml files like
```haml
- content_for :toolbar do
= video_link 'Vimeo', 'https://vimeo.com/92406233'
= video_link 'Youtube', 'http://www.youtube.com/user/Bulutfon'
```
If you want to make global change, you just modify the helper file. For example add `btn btn-default` css class all video links.
```ruby
# app/helpers/app_custom_helper.rb
module AppCustomHelper
def video_link title, url
capture_haml do
haml_concat link_to title, url, target: '_blank', class: 'btn btn-default'
end
end
end
```
If we don't use rails view helpers, we should add `class: 'btn btn-default'` code to all page.
Resource
1. [http://haml.info/docs/yardoc/Haml/Helpers.html#capture_haml-instance_method](http://haml.info/docs/yardoc/Haml/Helpers.html#capture_haml-instance_method)
2. [http://haml.info/docs/yardoc/Haml/Helpers.html#haml_concat-instance_method](http://haml.info/docs/yardoc/Haml/Helpers.html#haml_concat-instance_method)

0 comments on commit 11bfbcb

Please sign in to comment.