Shinosaka.rb #11を開催したよーヘ(^o^)ノ
今年最後のShinosaka.rbを開催しましたー
みなさんのおかげで1年を通して開催することができました。
来年からShinosaka.rbはLTタイムをつくるよー
参加者のなぜ???やRubyに関する困りごとをLTしてもらって、みんなで解決していく感じです。
もちろんペアプロ大会なんかも開催する予定です。
さて、本日のテーマは「Rails 4 Patterns」でした。
スライドはこれ⇒Rails 4 Patterns
僕なりにRailsで開発するときの大事な部分を説明しました。
みんなの意見が聞けてとても勉強になったよ
スライドの最後にでてくる内部リンクのURLを生成するにはこんな感じです
post_path @post, anchor: "post_#{@post.id}"
@ogomrさんと@toshima66さんが発表してくれました
@ogomrさんはRails Tree Cheat Sheetについての発表
発表内容
- Railsのファイル構造の規約
- 最近のお気に入りgem (GitHub - vcrやGitHub - foreman)
発表後にShinosaka.rbでgemが誕生する瞬間をみた!⇒cassette-rack
僕も興味ある分野なので、一緒に開発できればと思っていますよ@ogomrさん!w
@toshima66さんはSVG(Scalable Vector Graphics)についての発表
発表内容
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (16件) を見る
Ruby on Rails 4 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (2件) を見る
そして勉強会より楽しいと噂の懇親会へw(またいっぱい呑んでしまった( ˘ω˘)
Rails Boysなーwww
今年はたくさんの方にお世話になりました。
みなさんが参加してくれるので、1年を通して開催することができました。
大変だったけど、みんなと月1回会えるのを楽しみにがんばれたー( ̆ω ̆≡ ̆ω ̆)
来年もShinosaka.rbを宜しくですヾ( ̄∇ ̄=ノ
Have a nice new year ٩( ‘ω’ )و
DXRubyでプロ生ちゃんを動かしてみたヘ(^o^)ノ
これはプロ生ちゃんAdvent Calendar 2014の18日目の記事ですヘ(^o^)ノ
プロ生ちゃんの素材とDXRubyを使って、プロ生ちゃんを動かしてみます。
DXRubyとはゲーム開発初心者向けのDirectXライブラリ
注) 32bit版のRubyでのみ動作します
僕はMacなので、@wannabe53さんの"DXRuby を Wine から使う"を参考にインストールしました
DXRubyのAdvent Calendarはこっち⇒DXRuby Advent Calendar 2014
↓今回、利用したドット絵はこれ
動かしてみる
# pronama.rb require 'dxruby' require_relative 'animation' # sampleアプリから # 画像をロード image = Image.load_tiles('pronama_chan.png', 3, 4) pronama_chan = AnimeSprite.new pronama_chan.x = 0 pronama_chan.y = 0 # アニメーションの設定 pronama_chan.animation_image = image pronama_chan.add_animation :advance, 4, [1, 2] pronama_chan.start_animation :advance Window.loop do pronama_chan.update pronama_chan.draw # ESCで終了する break if Input.key_push?(K_ESCAPE) end
$ ruby pronama.rb
動いてるヘ(^o^)ノ
簡単ですねー
それでは矢印キーで上下左右に動かしてみましょう
# pronama.rb (...) pronama_chan.add_animation :retreat, 10, [10, 11] pronama_chan.add_animation :move_left, 10, [4, 5] pronama_chan.add_animation :move_right, 10, [7, 8] pronama_chan.start_animation :advance Window.loop do # 下矢印キーで前進する if Input.key_push?(K_DOWN) pronama_chan.start_animation(:advance) pronama_chan.y += 5 end # 上矢印キーで後退する if Input.key_push?(K_UP) pronama_chan.start_animation(:retreat) pronama_chan.y -= 5 end # 左矢印キーで左へ if Input.key_push?(K_LEFT) pronama_chan.start_animation(:move_left) pronama_chan.x -= 5 end # 右矢印キーで右へ if Input.key_push?(K_RIGHT) pronama_chan.start_animation(:move_right) pronama_chan.x += 5 end pronama_chan.update pronama_chan.draw # ESCで終了する break if Input.key_push?(K_ESCAPE) end
矢印キーを押すとプロ生ちゃんが動いてますヘ(^o^)ノ
どうですか?
簡単にRubyでサンプル作れちゃいましたねー
サンプルには実際のゲームなんかも同封されているので、興味のある方は是非!
Happy Hacking٩( ‘ω’ )و
サンプルコード => GitHub - pronama_game
d(゚Д゚ )☆スペシャルサンクス☆( ゚Д゚)b
Shinosaka.rb #10を開催したよーヘ(^o^)ノ #shinosakarb
今回のお題はLitaであそうぼうーです( ˘ω˘)
同じ日に第1回 Hubot×ChatOps勉強会が開催されていたので...
Hubot先生はJavaScript。
仕事でも、ProductでなければRubyでがんばりたい!(開発環境とかチャットとか
LitaはRubyってことは、そう既存のGemが使えるのだヘ(^o^)ノ
HipChatやSlackとか使おうと思ったけど、今回はIdobataを使わせていただきました。
みなさんのまとめブログがすばらしい(オレもがんばる?
いや!ここはエコシステム方式で...
適当にまとめました。 / HerokuにHubotやらLitaをデプロイしてSlack連携してみる - みなさんあのね http://t.co/wlZ7oJeIim #shinosakarb
— ひよっこ (@waday_) 2014, 11月 23
全然、適当じゃないw
勉強会のあとも触ってくれてるのうれしいヽ(´ー`)ノ
簡単ですがまとめてみました。#shinosakarb Wakayama.rbボードとLitaで温度をつぶやくchatボット(Shinosaka.rb #10にて) - YoshitoNote http://t.co/xfHzgpKnEz
— Yoshito Tanaka (@tanaka4410) 2014, 11月 24
Kobe.rbでいつもお世話になってる@tanaka4410さん♪
ボードと連携して、温度をタイマーでループさせて表示したり面白かった。
懇親会では、子供のような僕とOやんにボードについてやさしく教えてくれましたw
@meltediceさんは為替を表示するhandler作ってましたー
RubyMotionがちょっとお高いから、買い時を知らせてくれたら面白いねーって話してましたw
GitHub - lita-foreign-exchange
@honeniqさんはWikiから画像検索して表示するhandlerをつくってたよー
@kytiken_code さんはTwitterのタイムラインから画像検索して、ツイートするのを作ったみたい
なぜ、まきちゃんなのかは触れないでおきましょうw
みんな楽しんでくれたみたいヘ(^o^)ノ
chat botは全然触る機会がなかったので、僕も楽しめた。
HipChatやSlackなどと連携すると、もっと楽しくなる。
slackは独自ドメインが必要だったので、Shinosakarb.orgを取得して設定しているとこ。
メールサーバも立てる準備もしてるから、次回から使えるかもね。
Litaもたてて、みんなでどんどん拡張していくのも楽しそう。(HPだれか...w
次回は、今年最後のShinosaka.rb 12月20日(土)です。Shinosaka.rb #11
Rails4 Patternsについて盛り上がる予定です
Shinosaka.rbも今年1月から1年間続けることができました。(まだ、1回残ってるけど
今までたくさんの人が参加してくれました。
ホントに感謝です。ありがとーヘ(^o^)ノ
そして、これからも宜しくお願いします。
Happy Life Hacking With Ruby٩( ‘ω’ )و
追記
2014/11/27 slackの登録に独自ドメインは必要ないです><(あっても良いですが
Rails - touchオプションでupdated_atを更新するヘ(^o^)ノ
class Post < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :post end
pry(main)> Post.find(1) +----+-------------+------+-------------------------+-------------------------+ | id | title | body | created_at | updated_at | +----+-------------+------+-------------------------+-------------------------+ | 1 | sample post | | 2014-11-21 13:54:14 UTC | 2014-11-21 13:54:14 UTC | +----+-------------+------+-------------------------+-------------------------+ pry(main)> Post.find(1).comments.first.update(body: 'change comment') pry(main)> Post.find(1) +----+-------------+------+-------------------------+-------------------------+ | id | title | body | created_at | updated_at | +----+-------------+------+-------------------------+-------------------------+ | 1 | sample post | | 2014-11-21 13:54:14 UTC | 2014-11-21 13:54:14 UTC | +----+-------------+------+-------------------------+-------------------------+
commentを更新しても、Postのupdated_atは変更されないですよね?
では、touch
オプションを指定してみましょう
class Comment < ActiveRecord::Base belongs_to :post, touch: true end
もう一度、commentを更新してみましょう
pry(main)> Post.find(1).comments.first.update(body: ' touch: true') pry(main)> Post.find(1) +----+-------------+------+-------------------------+-------------------------+ | id | title | bosy | created_at | updated_at | +----+-------------+------+-------------------------+-------------------------+ | 1 | sample post | | 2014-11-21 13:54:14 UTC | 2014-11-21 14:05:16 UTC | +----+-------------+------+-------------------------+-------------------------+ pry(main)> Post.find(1).comments.first +----+-------------+-------------------------+-------------------------+---------+ | id | body | created_at | updated_at | post_id | +----+-------------+-------------------------+-------------------------+---------+ | 1 | touch: true | 2014-11-21 13:54:14 UTC | 2014-11-21 14:05:16 UTC | 1 | +----+-------------+-------------------------+-------------------------+---------+
Postのupdated_atも更新されましたー
Viewでrender partialをキャッシュする場合とかに使えそうですね。
Happy Hacking٩( ‘ω’ )و
Railsでpostした時間を○○minutes agoみたいに表示するヘ(^o^)ノ
今日、Twitterで@netwillnetさんと@chiastoliteさんのツイートをみてやってみた
@netwillnet time_ago_in_wordsすかね
— Hiroyuki Morita (@chiastolite) 2014, 11月 17
Railsではtime_ago_in_wordsヘルパーが用意されています
でも、この子はリアルタイムで更新されない(当たり前
クライアントサイドで、リアルタイムに経過時間をとってきたいですよね?
これを使ってみましょう
jsファイルを... ダウンロードせずにgemを探します
rails-timeago - GitHubを使ってみましょう
使い方はとっても簡単♪
# Gemfile gem 'rails-timeago', '~> 2.0' # app/assets/javascripts/application.js //= require rails-timeago # app/views/posts/index.html.haml - @posts.each do |post| %tr %td= timeago_tag post.created_at, nojs: true, limit: 10.days.ago
しばらく何もせずに待っていると...
クライアントサイドで経過時間が更新されていると思いますヘ(^o^)ノ
これでタイムラインの経過時間がリアルタイムに更新されますねー
Happy Hacking٩( ‘ω’ )و
Railsでデータを登録後にメールを送信ヘ(^o^)ノ
Railsでユーザ登録後にメール送信することはよくあります。
今日、その部分を見てて気になったのでメモ程度に
もともとはこんな感じのコードやった
# app/controllers/user.rb def create @user = Post.new(user_params) @user.save UserMailer.wellcome_email(@user).deliver respond_with(@user) end
別に問題ないのですが...
気になったのはココ⇒UserMailer.wellcome_email(@user).deliver
なので、リファクタリングしてみました。
# app/models/user.rb after_create :send_wellcome_email private def send_wellcome_email UserMailer.wellcome_email(self).deliver end
# app/controllers/user.rb def create @user = Post.new(user_params) @user.save respond_with(@user) end
callbackはコードの見通しを良くしてくれますね
メール送信をモデルのafter_createに書くか、コントローラーのaround_actionに書くか迷った
なんかメール送信をモデルに書くの違和感ある...( ̄▽ ̄;)
やっぱ、around_actionかなー
Happy Hacking٩( ‘ω’ )و
RubyWorld Conference day 1 ヘ(^o^)ノ
RubyWorld Conference 2014に参加してきましたー
前日に松江入りヘ(^o^)ノ
錦織 圭も帰国して食べたい!と言っていたのどぐろー
day 1
ホテルを出て、「さむーっ」(((((((( ;゚Д゚))))))))
Matzの基調講演
Rubyが教えてくれたこと
毎年、Matzの基調講演は楽しみにしている
上司に承認を求めていれば、Rubyは誕生していなかった
とりあえずやってみて、できたらこんなの作ってみましたーと
ヤル前に上司に許可をとると、大抵の人はNoと言う(立場上言わざる得ない
よって、承認はイノベーションを阻害してしまう
アイデアそのものには価値はない
アイデアが浮かんだだけでは何も生まれないし、世界も換えられない
でも、形になっていくにつれて価値が生まれる(かもしれない
あきらめちゃダメだー
色々と辛いこともあるし、困難な時もある
あきらめたらそこでおしまい
問題が発生したときには謝ろう
何もなければ黙っておこうw
変化を恐れちゃダメだ
バージョンを固定しておけば、安定性は増す
けれど、それでは進化できない
たとえ、コストがかかっても進化を選択するべき
Be great Amature 凄いアマチュアになろう
そして、すごい未来を築こう
@iR3さんのツイートを拝借...
matzの基調講演のポイントまとめ #RubyWorld http://t.co/MRe5DcSYAv
— FUKUI Osamu (@iR3) 2014, 11月 13
各Ruby処理系の性能計測調査報告とその考察
CRuby、JRubyでPassenger、Warbler、Pumaのベンチマーク比較
Unicornはなかった
噂のRaptorもちらっとでてきましたー
Rubyを使った分散全文検索ミドルウェア
楽天のRubyベース分散型KVS “ROMA”への取り組み-GUIで変わるKey-Value Storeの提案
ぼくたち、Rubyプログラミング少年団! ~小学生からはじめるRubyプログラミング~
Smalrubyのブロック <=> Rubyコードがめっちゃ良いー
私たちの会社を「開発」する ~Company Hacking Guide
会社をハックすするお話
GitHubのissueで管理(メールのやりとりや、忘年会もwww
Ruby Prize 2014 表彰式
またまた@iR3さんのツイートを拝借...
RubyPrizeの皆様の集合写真 それにしても柴田さんの受賞スピーチは感動的でした #RubyWorld http://t.co/GnTMSE0SeR
— FUKUI Osamu (@iR3) 2014, 11月 13
@hsbtさんおめでとうございますヾ( ̄∇ ̄=ノ
明日も楽しみだー٩( ‘ω’ )و
RubyWorld Conference 2014 1日目のまとめ
追記
2014/11/15