BitArts Blog

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

Ruby

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フレームワークで採用されている手…

久しぶり更新:Ruby 3.1対応:サクサク引けるRubyリファレンスマニュアル

ずっと更新できていなかった サクサク引けるRubyリファレンスマニュアル を更新しました! 最新のRuby 3.1.xに対応しています! miyamae.github.io

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構造化マークアップを追加…

静的HTMLの問い合わせフォームからメール送信するHeroku Buttonアプリ

Heroku Buttonこと、Deploy to Herokuボタンとは、これをクリックすると、自分のHerokuアカウントにサードパーティのWebアプリをデプロイしてくれるという機能。地味なようで結構画期的なサービス。 今回僕も試しにHeroku ButtonでデプロイできるWebアプリを…

テンプレートエンジン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になり、セオリーが変わった部分も少なくありません。このガイドの原文は…

Ruby 2.1.0対応:サクサク引けるRubyリファレンスマニュアル

ちょうど先ほど、Ruby 2.1.0正式版がリリースされました。すでに「るりま」のほうも2.1.0に対応しているので、拙作「サクサク引けるRubyリファレンスマニュアル」も、るりま2.1.0版にアップデートしました。ついでに1.8.7/1.9.2/1.9.3/2.0.0版も最新版に更新…

HomeBrewの rbenv install --list が古いままになってる

rbenvにもRuby 2.1.0がきました。これで気軽に2.1.0を試せますね。HomeBrew環境であれば、まず次のようにしてruby-buildを更新します。 % brew upgrade ruby-build インストール可能なバージョンを確認するには、次のようにします。 % rbenv install --list …

Sass(SCSS)とかChefとか使う人はBundler使おうぜ

RubyGemsはRubyのライブラリ配布のパッケージ管理システムですが、なんか最近では、SassとかChefとか、Rubyプログラマ以外の人が使いそうなツールがRubyGemsで配布されるケースが多くなってきました。Rubyとか絶対書かなそうなウェブデザイナがgem installと…

プチWebアプリ作るならSinatraを

DBを使わないようなちょろっとしたアプリを作るような場合は、Railsでは設定ファイルのほうが大きくなってしまう感じで大げさだ。かと言ってPHPは死んでも使いたくない。まあCGIでも十分なんだけど、もっとイケてる方法はないだろうか。 というときRubyでや…

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

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

JenkinsでRailsアプリの品質管理

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

Apache+PassengerでRuby 2.0環境と1.9環境を共存

Apache+Passengerで、Ruby 2.0.0依存のアプリを動かしたいけど、すでにRuby 1.9.3のアプリも動いているから困った。の解決方法。 Passeger 4.0から、Rubyインタプリタを指定するPassengerRuby設定が、VirtualHostディレクティブの中に書けるようになりました…

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

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

MacにrbenvでRuby 1.8.7をインストール

いまさらRuby 1.8.7?ですが、古いアプリをメンテする時には必要なので。…そんな時こそrbenvですよね。 しかし、MacにrbenvでRuby 1.8.7を入れようとしたらエラー。 % rbenv install 1.8.7-p371Downloading ruby-1.8.7-p371.tar.gz...-> http://ftp.ruby-lan…

Ruby 2.0.0対応:サクサク引けるRubyリファレンスマニュアル

Ruby 2.0.0の安定版が遂に登場しましたね。すでに「るりま」のほうも2.0.0対応のマニュアルが出ているということで、拙作「サクサク引けるRubyリファレンスマニュアル」を、るりま2.0.0版にアップデートしました。ついでに1.8.7/1.9.2/1.9.3版も最新版に更新…

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

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

RSpec+Capybara+SeleniumでモダンなWebアプリをテスト

Railsアプリのテストにrequest spec + Capybara(RSpec 2.10.0 + Capybara 1.1.2)を使い始めてみた 。Cucumberみたいに客も読めるみたいな文章風の文法ではないけど、単体テストからRSpecで統一できるのでお気軽。「受入テスト」というより「結合テスト」と…

RubyのプチユーティリティをGitHubへ

自分のGitHubが寂しかったので、過去に作ったRubyのちょっとしたユーティリティを公開しました。 ≫ miyamae/ruby-proc_cache どこでも使えるプロシージャキャッシュ。 def calc proc_cache do 重い処理 endend ≫ miyamae/ruby-web_crawler リスナを実装する…