2013年05月

rails4 で最初にやったことメモ

rspec, jquery, slim, sass, twitter-bootstrap, bootswatch 化したときのメモ
コードはこちら https://github.com/sonots/try_rails4/commits/master

1. rails new

$ gem install rails
$ rails new try_rails4 --skip-bundle
$ cd try_rails4 
2. Gemfile を編集。jquery-rails, slim, twitter-bootstrap-rails などを追加。
source 'https://rubygems.org'

ruby '2.0.0'
gem 'rails', '~> 4.0.0'
# gem 'sqlite3' # Use sqlite (>= 3.6.16) as the database
gem 'mysql2' # Use myql as the database
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0' # compressor for JavaScript assets
gem 'therubyracer', platforms: :ruby # Embeded V8 Javascript Interpreter
gem 'jquery-rails'
gem 'jquery-ui-rails'
# gem 'turbolinks'
# gem 'jquery-turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'unicorn'

gem 'slim', :require => 'slim-rails'
gem "slim-rails"
gem 'twitter-bootstrap-rails'
gem 'bootstrap-sass' # http://d.hatena.ne.jp/sandmark/20120321/1332292995
gem 'bootswatch-rails'
gem 'bootstrap-datetimepicker-rails'
gem 'font-awesome-rails' # Font-Awesome web fonts

group :development do
  gem 'yard' # document genration
  gem 'better_errors' # sophisticated error view
  gem 'binding_of_caller' # add irb/pry on better_rails view
  gem 'bullet' # warn N+1 queries
  gem 'rack-mini-profiler' # simple profiler
  # gem 'newrelic_rpm' # use newrelic as a performance profiler
end

group :development, :test do
  gem 'spring' # rails application preloader
  gem 'guard'
  gem 'rspec-rails' # rails g rspec:model
  gem 'guard-rspec' # automatically run specs
  gem 'byebug' # ruby 2.0 debugger
  gem 'pry'
  gem 'pry-byebug'
end
3. turbolinks をオフにしたので、既存コードから関連箇所を消す。app/assets/javascripts/application.js から削除
 // app/assets/javascripts/application.js
 //
 //= require jquery
 //= require jquery_ujs
-//= require turbolinks
 //= require_tree .
4. config/database.yml を編集。mysql ベースに変更
defaults: &defaults
  adapter: mysql2
  database: try_rails4
  pool: 5
  timeout: 5000
  username: root
  password:
  host: localhost
  port: 3306

production:
  <<: *defaults

development:
  <<: *defaults
  database: try_rails4_development

test:
  <<: *defaults
  database: try_rails4_test
5. rspec-rails で test を rspec に変更
$ bundle exec rails g rspec:install && rm -rf test
6. jquery-rails でデフォルトの prototype.js を jquery.js に変更
$ bundle exec rails g jquery:install
7. 試しに scaffold & db:migrate
$ bundle exec rails g scaffold book title:string
$ bundle exec rake db:create db:migrate

8. twitter-bootstrap-rails 対応
$ rails g bootstrap:layout application && rails g bootstrap:themed Books
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.css.scss

app/assets/stylesheets/application.css.scss を編集。今回は bootswatch の spacelab テーマにした。
// First import spacelab variables
@import "bootswatch/spacelab/variables";

// Then bootstrap itself
@import "bootstrap";

// Bootstrap body padding for fixed navbar
body { padding-top: 60px; }

// Responsive styles go here in case you want them
@import "bootstrap-responsive";

// And finally bootswatch style itself
@import "bootswatch/spacelab/bootswatch";

// bootstrap-datetimepicker-rails gem requires follow line
@import 'bootstrap-datetimepicker';

// font-awesome gem
@import "font-awesome";

// Whatever application styles you have go last
8. 動作確認
$ bundle exec rails s
http://localhost:3000/books/new にアクセスして確認



Fluentdのプラグインで @mutex.synchronize は必要か

こんな設定を書いた時に、out_forward プラグインは Fluentd 本体にどのような扱いを受けるか。

<match foo.bar>
  type copy
  <store>
    type forward
  </store>
  <store>
    type forward
  </store>
</match> 
<match **>
  type forward
</match>

答えとしては、それぞれの forward プラグインは1つの fluentd プロセス内でスレッドとして起動される。

そして、それぞれで out_foward プラグインは new される。

結果、プラグイン内のインスタンス変数がスレッド間で共有されることはない。

ので、インスタンス変数にアクセスする際に、@mutex.synchronize する必要はない。※ もちろんプラグイン内部で自発的にスレッド切ってごにょごにょしている場合は除く。それはプラグイン内の責任範囲。
 
ただし、@@なクラス変数や、$なグローバル変数にアクセスする場合は @mutex.synchronize が必要。同じプロセスなので。

Provisioning Frameworks Casual Talks vol.1 に行ってきた #pfcasual

こんにちは @sonots です。金曜日にLINE株式会社さんで開催された Provisioning Frameworks Casual Talks vol.1 に行ってきたので、何か書いておきます。

新卒研修でserverspecとChef を使ったカヤックの @fujiwara さんの話からはじまり、つづいて 入門Puppet の @kentaro さん、入門Chef Solo の @naoya_ito さんと続いて、@jhotta さんは chef本家 opscode の Mr. @sethvargo を召還してくれましたし、最後にペパボのSqaleでどう chef & puppet を使っているのか @hiboma さんがお話してくれる、という豪華な発表者陣でひじょーに濃い内容でした!すごい面白かったです!

で、発表の内容などは他の方がまとめてくれているだろう、ということで私は発表をネタ(というと語感が悪いがw)に twitter や懇親会で他の参加者と話していた内容をまとめておこうと思います。良い話をできたと思っていて、そのままにしておくともったいないので。

※ twitter のつぶやきをペタペタ貼っているので表示に時間かかるかもしれません。togetter でまとめるとかのほうが良かったかな orz

いちおう発表者の方々の資料のリンク貼っておきます。

続きを読む
A Ruby and Fluentd committer working at DeNA. 記事本文および記事中のコード片は引用および特記あるものを除いてすべて修正BSDライセンスとします。 #ruby #fluentd #growthforecast #haikanko #yohoushi #specinfra #serverspec #focuslight
はてぶ人気エントリー