タグ

ブックマーク / qiita.com/joker1007 (32)

  • タイプキャスト付のattr_accessorを作った - Qiita

    車輪の再発明感が凄いというか、active_attrを使っとけばいいのでは、という説があるのだが、attr_accessorにタイプキャスト機能を追加したgemを作ってみました。 joker1007/attr_typecastable 前に書いた Ruby - ActiveModelを活用するための属性定義拡張系gemについて - Qiita というネタで紹介してるgemは基的にこの機能を持ってます。 ただ、色々と余計なことやり過ぎてて細かく調整しようとした時に、ソースが読みにくい。 今更新しいgemとして作る程のものでもないんですが、コードベースが軽量で機能を限定したものを自前で用意しておいた方が、自分としては楽だろうと思ったのでgemにしてみました。 多分、active_attr, virtus, attrio等と比べてコードベースはめっちゃ小さくなってます。 その他のgemは色々と

    タイプキャスト付のattr_accessorを作った - Qiita
    a2ikm
    a2ikm 2014/10/21
  • Railsをバージョンアップし続けるために必要なこと - Qiita

    当は、RubyWorld Conf辺りでこういう内容も交えてなんか話せればいいなあと思ってたんだけど、CFPに落ちたのでQiitaにポエムを書いてみました。 Railsはそれなりに学習コストはかかりますが、慣れてくるとデフォルトで便利なものが揃ってるしサードパーティライブラリも豊富で、未だに最も便利なWebアプリケーションフレームワークの一つだと思います。 なので、最近のスタートアップ界隈ではRailsで開発をスタートする、という話をよく耳にします。(個人の感想です) しかし、Rails体に新しい要素をガンガン取り入れてくるので、バージョンアップのサイクルはかなり早く、それに追従していくのはそれなりに大変です。 Railsで開発をする場合には、一旦レールに乗ったらプロダクトが死ぬまで走り続ける覚悟が必要です。(時速60km以下になったら爆発する) それを最初に理解しておかないと、あっ

    Railsをバージョンアップし続けるために必要なこと - Qiita
    a2ikm
    a2ikm 2014/08/28
    “Railsに限らず、アプリケーションを開発し運用し続けていくには、バージョンアップに対応するための「覚悟」が必要です。”長期運用ならではのやりがいでもあるし辛いところでもある
  • プレーンなRubyオブジェクトでhas_manyとbelongs_toを使う - Qiita

    最近、Railsで開発していると、ActiveModelを使ってプレーンなオブジェクトを拡張してモデルとして利用する事が増えてきた。 そういうクラスを定義していると、しばしばActiveRecordなオブジェクトに対する参照が欲しくなる事がある。 で、単純にこういう定義をしたりする。 class Comment include ActiveModel::Model attr_accessor :body, :user_id def user @user ||= User.find_by(id: user_id) end def user=(user) self.user_id = user.id @user = user end end とは言え、タイプチェック入れたり、同じような定義がいくつも入ると邪魔である。こういうものは宣言的に済ませてソースコードには、もっとドメインのコードを表現し

    プレーンなRubyオブジェクトでhas_manyとbelongs_toを使う - Qiita
  • [小ネタ]pecoでbundler管理下にあるgemのディレクトリに移動する - Qiita

    peco/pecoのwikiにそれっぽいのが書いてあるのだが、例みたいに別のコマンド作って噛まさなくてもzshだけで行けそうだったので、自分なりに設定書いてみた。 function cdgem() { local gem_name=$(bundle list | sed -e 's/^ *\* *//g' | peco | cut -d \ -f 1) if [ -n "$gem_name" ]; then local gem_dir=$(bundle show ${gem_name}) echo "cd to ${gem_dir}" cd ${gem_dir} fi }

    [小ネタ]pecoでbundler管理下にあるgemのディレクトリに移動する - Qiita
    a2ikm
    a2ikm 2014/06/30
    bundle openより圧倒的に便利だ…
  • Railsと周辺のTimeZone設定を整理する (active_record.default_timezoneの罠) - Qiita

    まず、ここまでで一旦整理する。 Time.nowはRubyの組み込みなのでシステムのタイムゾーンしか見ない。OSの時間と常に一致する。Time.localの出力結果もOSのタイムゾーンと一致する。 TimeWithZoneクラスはconfig.time_zoneに左右される。 Ruby組み込みのメソッドで取得したUTCの時間を基準に、設定されているタイムゾーンの時間に変換する。 ActiveRecordのインスタンスに対してアクセサを利用して時間をやり取りする場合はTimeWithZoneで行われる。 仮にTimeクラスを渡しても代入時にTimeWithZoneに変換される。 config.active_record.default_timezoneの設定はDBを読み書きする際に、DBに記録されている時間をTime.utcで読むかTime.localで読むかを設定する。 :utcの場合DB

    Railsと周辺のTimeZone設定を整理する (active_record.default_timezoneの罠) - Qiita
    a2ikm
    a2ikm 2014/04/28
    そしてRDSはUTC固定なのである
  • 最近の(2013/8/28時点の)vagrantとberkshelfの書き方 - Qiita

    vagrantとberkshelfで超捗る、みたいな記事は一杯あるんですが、その先のちょっと弄りたいってなった時に一瞬悩む。 コミュニティcookbookのattributesとかカスタムしたい。 自分で作ったcookbookのレシピも追加したい。 で、色々調べてみたんですが、run_listで呼ぶよりも、そのプロヴィジョニングしたい環境の名前のcookbookを新しく作って、依存対象となるコミュニティcookbookをmetadataに書き、include_recipeする方が良いんじゃないかと思いました。 既に、BerksfileとVagrantfileがあるものとします。 vagrant plugin install vagrant-berkshelfも完了済みと想定。

    最近の(2013/8/28時点の)vagrantとberkshelfの書き方 - Qiita
  • 俺がGitHubでスターを付けたリポジトリ一覧 - Qiita

    GitHubを彷徨っていてよくあるのが、ググったりRuby Toolboxとかで見つけて「これイイじゃんよ!」と思ったら既にスター済み、という奴。 一回、自分がどんなリポジトリにスター付けたのか整理しつつ、更新止まってたり古くなったやつを削除していこうと思う。 それぞれの説明は超適当。基的にいつか使おう的な感じでスターを付けているので、あんまり使ったことあるのが無い。 そもそも良く使うものにはスター付けてないこと多いし…。 大体rubygemsで一部JSのライブラリ、少しvimScalaって感じ。 思い返したようにスター付けてたので、時期がバラバラだけど、基的に下に行く程付けた時期が新しい。 リポジトリ 説明

    俺がGitHubでスターを付けたリポジトリ一覧 - Qiita
    a2ikm
    a2ikm 2014/03/19
  • 最近(2013/11/18)のspring(Railsのコマンドを高速化する方)について - Qiita

    DEPRECATED:既に古いのでこっちを見てください springについてとだけ書くと誤解を招きそうなので、説明的なタイトルにした。 Railsのコマンドを高速化するgemとして最近流行ってるspringというgemがあります。 ちょっと前にバージョンが上がって、rspecとかcucumberを呼び出すためのコマンドが別のgemに切り出されました。 そのため微妙に使いづらくなった気がします。 rspecとcucumberのためのサブコマンドは以下のgemで提供されています。 jonleighton/spring-commands-rspec jonleighton/spring-commands-cucumber READMEを読むとGemfileに書け、って書いてあるんですが、書くとspringもインストールされます。 ところが、spring体のREADMEを読むと、bundle e

    最近(2013/11/18)のspring(Railsのコマンドを高速化する方)について - Qiita
    a2ikm
    a2ikm 2014/02/04
    あー、なるほど、spring-commands-rspecは~/.spring.rbでrequireするのか。Gemfileに書くのはなんだかモヤッとしてたからこうしてみよう
  • てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ! - Qiita

    てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ!RubyRails ちょっと煽り気味のタイトルにしてみましたが、Railsで開発する時は意識的にOOPに寄せないとオブジェクトの力が活かせなくなるよってことと、Railsが提供しているクラスの責務を分割することを支援してくれる機能について話をします。 ActiveRecordの性質 Rails開発においては、モデル層にロジックを書いてコントローラーは薄くしろ、というのはしつこく言われているので、概ね浸透してきていると思います。 それに加えて、最近私が結構しつこく主張しておきたいのが、モデル = ActiveRecordでは無いよ、ということです。 ActiveRecordは成り立ちから言うと、ロジックとDBへの永続化をまとめてカプセル化するアーキテクチャパターンから来ています。

    てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ! - Qiita
  • rails_adminをカスタマイズする方法まとめ - Qiita

    当はrails_adminをカスタマイズするより、自前で実装した方が最終的には幸せになれると思うんですが、そうもいかない事情もしばしばあったりして(主にスケジュール的な理由で)、後から泥臭い場当たり的な対処に奔走しなければならないこともあります。 そういう時のためのノウハウが貯まったので書いておきたいと思います。 deviseと連携させる これは公式にもちゃんと書いてて、超簡単。

    rails_adminをカスタマイズする方法まとめ - Qiita
  • Rails4へのアップデート時に引っかかったポイントいくつか - Qiita

    Rails 4.0.0がリリースされたので今参加しているプロジェクトのアプリのアップデートが出来るかを試してみました。 やってみた結果としては、2.3 -> 3.0や、3.0 -> 3.1に比べると大分楽にバージョンアップできる感じです。 たまたま今のプロジェクトで引っかかった問題について、メモがてらまとめておきます。 rake rails:update diffを見ながらconfigファイルを書き換える。 そんなに大きな変更は無い。 rails4からはinitializerに色々移せって感じで、application.rbが軽量化されてるけど、元のままでも別に問題無い。 設定項目の重複だけ注意。 strong_parameters 元々、gemで先行導入して取り入れていたので概ね問題無く移行できました。 attr_accesibleを利用したセキュリティ対策は、外部のgemに分離されてい

    Rails4へのアップデート時に引っかかったポイントいくつか - Qiita
  • Githubのpull requestページに、テスト結果を表示するJenkinsの設定 - Qiita

    Commit Status APIについて Githubにはcommit statusを操作するためのAPIがあります。 commit statusとは、特定のコミットがどういう状態にあるのかを示すものです。 successとかfailureとかpendingとか。 参考: Commit Status API · GitHub Blog commit statusが登録されているコミットをpull requestすると、commit statusの状況を確認して、マージしても問題無いかを自動で表示してくれます。 こんな感じ。 travis-ciを使ってると上手いことやってくれるんですが、今の所、Jenkinsだと多少工夫が必要です。 いくつかやり方はありますが、私が採用したのはparameterized trigger pluginを使う方法です。 設定内容 1. masterや、rele

    Githubのpull requestページに、テスト結果を表示するJenkinsの設定 - Qiita