HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Boolean Type Words in YAML


YAML is a widely used data serialization language. In any software development project, or a random dev-ops task you can come across with YAML. For example Ruby on Rails uses YAML for fixtures, configuration files and localization. CI/CD tools such as CircleCI and Travis also use YAML for configuration. If you ever experienced a strange behaviour with YAML, you may have used the reserved words of YAML. YAML reserves some words such as 'yes', 'no', 'y', 'n', 'off', 'on', etc. for boolean type. For example:

yes:
    turkish: evet
    german: ja
    english: yes
no:
    turkish: hayır
    german: nein
    english: no

will be interpreted as:

true:
    turkish: evet
    english: true
false:
    turkish: hayır
    english: false
Continue reading
Date: | Tags: yaml, yaml reserved words, yaml boolean type | Categories: tech, ruby, ruby on rails

Rails Instantiated Fixtures


Here we have sample Ruby on Rails fixture file:

test/fixtures/newsletters.yml

tenant_newsletter:
  name: sample
  text_message: hello
  phone_number: 0555444332211
  first_name: foo
  last_name: bar

There are two popular ways to use fixtures in your Rails tests. The first one is directly calling the name of fixture file followed by a symbol stating the name of any individual fixture, ie:

class NewsletterTest < ActiveSupport::TestCase
  test 'a sample test' do
    assert newsletters(:tenant_newsletter).valid?
  end
 end
Continue reading

GEM - Pundit ile authorization (cancan alternatifi)


Ryan Bates'in sırra kadem basmadan önce geliştirdiği GEM'lerden biri de cancan. Ryan ortadan kaybolup cancan'i yetim bırakınca Bryan Rite önderliğinde bir grup geliştirici başka bir proje olan cancancan'i sahiplendi ve bunu geliştirmeye devam etti.

Yani cancancan sanılanın aksine cancan'den sonra ortaya çıkmış veya cancan'in yokluğuna karşılık geliştirilmiş bir GEM değil, 2009'dan beri hayatta olan bir proje. Ancak en aktif geliştirme sürecini ise 2014'ün Ocak ve Eylül ayları arasında (Ryan'ın ortadan kayboluşu) yaşıyor. Ryan nerede birileri tartışadursun, biz ayakları yere daha sağlam bakan alternatiflere gidelim.

Continue reading

Ruby on rails ve güvenlik - routes


Rails uygulamalarında route'ların güvenliğini sağlarken Devise gibi authentication GEM'lerinin sağladığı helper'lardan ve lambda metodundan yararlanabilirsiniz. Örneğin sadece super_admin rolüne sahip kullanıcılara açık olmasını istediğiniz route'ları şu şekilde tanımlayabilirsiniz:

# config/routes.rb

authenticate :user, lambda { |u| u.is_super_admin? } do
  mount Resque::Server => '/admin/resque'
  namespace :admin do
    resources :ip_lists, except: :show
    resources :token_users, except: :show
  end
end

Artık admin/resque, admin/ip_lists ve admin/token_users yolları sadece super_admin'ler için erişilebilir olacak.

Continue reading

Rbenv ile ruby ve rails kurulumu - debian 7


Rbenv, RVM gibi ancak RVM'ye göre çok daha basit bir şekilde, birden çok Ruby versiyonunu birlikte kullanmak için geliştirilmiş bir araçtır. Sisteminizde tek bir Ruby sürümüne ihtiyaç duyuyorsanız dahi, gelecekte farklı sürümlere ihtiyaç duyabileceğiniz için rbenv ile kurulum yapmanızı öneririm.

Öncelikle rbenv'i /home/foo altına klonlayın:

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

Daha sonra PATH'e rbenv değişkenlerini ekleyin:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
Continue reading