BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

Rails

Rails + Ruby 3.3.0でYJITを使ってみる

Rubyインストール時にRust環境が必要 Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしま…

Rails + ViewComponentによるコンポーネント指向UI開発

UI開発におけるコンポーネント指向とは UIを独立した再利用可能な部品(コンポーネント)に分割 コンポーネントにHTML(DOM)、ロジック(JavaScript)、CSSをカプセル化 React、Vue.js、Angularなどフロントエンドの主要なViewフレームワークで採用されている手…

RailsでPostgreSQLのRow Level Security Policyを使ったマルチテナント

Clipkit(クリップキット) というSaaSを作っています。マルチスキーマ方式のマルチテナントシステムなのですが、テナント数が1,000近くなってきて辛さも出てきているので他の方式を検証中です。 LD;TR PostgreSQLのRow Level Security Policyを利用したマル…

Rails+Bootstrapでnavbarのactiveを自動設定

Bootstrapのnavbarで現在位置のaにclass="active"って付けるじゃないですか。あれって階層になると判定が大変でなかなか美しく実装できないですよね。 色々考えてみたけど、JSで実装すればいいんじゃないですかね? JavaScript版とCoffeeScript版です。(要j…

RailsでURLのバリデーション

RailsでのURLのバリデーションについて探すと次のような書き方がよく出てきます。 validates :url, format: URI::regexp(%w(http https)) URLの正規表現は真面目に書こうとすると複雑なものになりますが、URI::regexpがURLの正規表現を返してくれるのでこれ…

Railsでrespond_toとか使う時にはデフォルトformatを指定しなきゃだめ

( ..)φメモメモ FacebookのOGPのメタデータを収集するクローラは、Accept: */*でリクエストを送ってくるようだ。普通のWebブラウザではAccept: text/htmlが入ると思うけど、これを前提にした実装になっているとクローラに対してWebアプリが正しいHTMLを返さ…

rake tmp:cache:clearが遅い

Railsでキャッシュストアをファイル(config.cache_store = :file_store)にして、ガンガンキャッシュを活用していると、サイトの規模が大きくなった時にrake tmp:cache:clearが辛くなってくる。やたら時間かかるようになるし、その間サーバの負荷もヤバイ。…

Railsでパンくずbreadcrumbs_on_railsにmicrodata構造化マークアップを追加

Railsでパンくずリストを実装するのに、breadcrumbs_on_railsを使っています。 これの出力をカスタマイズしたい。 Googleの検索結果にもパンくずリストが表示されるようにしたい。こんな感じで↓ このようにするためには、microdata構造化マークアップを追加…

テンプレートエンジンSlimに乗り換え

個人的にHTMLテンプレートエンジンには昔からかなりこだわりがある大好き分野であり、何度か自作したりもしてきたんだけど、最近はちょっと冷めてきて、ここ最近というか長らく普通にERBを使っていました。 Webデザイナーから納品されたHTMLファイルを尊重す…

Railsアプリの雛形作り

Rails Application Templatesを使おう、と思って、やめたわけなので、その代わりに普通に雛形アプリを作っておくことにした。 Webアプリを作る時に定型的に必要になる機能は少なくない。実はこれが結構ボリュームがあるし、機能要件に入らない部分が多いので…

Rails Application Templatesを使おう、と思って、やめた

新しくRailsアプリを作る時には、rails newコマンドを叩いて雛形を生成するわけだが、そこから先の準備が結構面倒だ。 いつものGemfileを作って、各設定ファイルいじって、Bootstrap入れて、定形のレイアウト作って、Git初回コミットして、…というやつ。それ…

Capistrano3でRailsアプリを一発デプロイ

普段作るRailsのプロジェクトはGitで管理しているので、アプリケーションのアップデート手順というと、sshでログインしてgit pull。あと必要に応じてbundle installやrake db:migrateして、touch tmp/restart.txtで完了。 たいした手間ではないし、昔のよう…

おれのGemfile

Railsアプリを作る時の最近のGemfileを晒してみる。 だいたいデフォで入れているものたち。 source 'https://rubygems.org' ruby '2.1.0' gem 'rails', '4.0.3' gem 'sqlite3' gem 'sass-rails', '~> 4.0.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails',…

登録されるとつらいユーザー名を禁止するRails Validator

昨日こんな記事が話題になっていました。 ≫ 登録されるとつらいユーザー名リスト - Qiita ああ、ちょうどまさにこういうルーティングのWebサービスを作っているところだったりすので、とても参考になる情報。ということでサクッとRailsのValidatorにしてみま…

Railsスタイルガイド(適当日本語訳)更新しました

bbatsov/rails-style-guideが非常に参考になりそうなドキュメントだと思ったので、自分で利用しやすいように適当に日本語訳してみたのが1年以上前のことです。 この1年でRailsは4.0になり、セオリーが変わった部分も少なくありません。このガイドの原文は…

Rails 4.0.0で作ったアプリがifreme内に表示できない件

チャットクラーク(chatclerk.com)のRuby 2.0.0 + Rails 4.0.0対応作業を完了しました。相変わらずRailsのアップデートは大変なのですが、3.2時代のアプリであれば、まあそれほどでもない感じですね。2.x時代のアプリだと大変そうだし、もし回帰テストがな…

JenkinsでRailsアプリの品質管理

遅ればせながらJenkinsを試してみました。 継続的インテグレーションは、複数の開発者が関わる大きなプロジェクトにおいて品質を保つための手法として効果的なのは明らかなんですが、いやいや独りプロジェクトでもかなり役立ちそうですよ。テストをサボれな…

Railsが入っていない環境でRailsアプリを作り始める方法

今ではBundlerのおかげでプロジェクトごとにgemを管理できるので、システムワイドに色々インストールされてカオスになることはなくなりました。 でもRailsアプリを新しく作る時に困った。アプリ新規作成にはRailsが必要。でもシステムワイドにgem install ra…

rails-style-guide(Rails3スタイルガイド:適当日本語訳)

Rails 3 スタイルガイド(bbatsov/rails-style-guide)が良いまとめだなと思ったのですが、僕は英語が苦手なので辛いです。だから自分なりに日本語版を作っておくことにしました。誤訳上等。 自分の理解が不十分のところの訳文は特にヘンテコなままです。Git…

Railsをアップデート

リリースから2年以上が経った「モグリー」ですが、先日のリニューアルに続いて、(やっと重い腰を上げて)アプリケーションフレームワークをRuby on Rails 2.4から最新の3.2へとアップデートを実施した。Rubyも1.8.7から1.9.3へ。さらにライブラリの互換性の…