Ruby
Rubyインストール時にRust環境が必要 Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしま…
UI開発におけるコンポーネント指向とは UIを独立した再利用可能な部品(コンポーネント)に分割 コンポーネントにHTML(DOM)、ロジック(JavaScript)、CSSをカプセル化 React、Vue.js、Angularなどフロントエンドの主要なViewフレームワークで採用されている手…
ずっと更新できていなかった サクサク引けるRubyリファレンスマニュアル を更新しました! 最新のRuby 3.1.xに対応しています! miyamae.github.io
Clipkit(クリップキット) というSaaSを作っています。マルチスキーマ方式のマルチテナントシステムなのですが、テナント数が1,000近くなってきて辛さも出てきているので他の方式を検証中です。 LD;TR PostgreSQLのRow Level Security Policyを利用したマル…
Bootstrapのnavbarで現在位置のaにclass="active"って付けるじゃないですか。あれって階層になると判定が大変でなかなか美しく実装できないですよね。 色々考えてみたけど、JSで実装すればいいんじゃないですかね? JavaScript版とCoffeeScript版です。(要j…
RailsでのURLのバリデーションについて探すと次のような書き方がよく出てきます。 validates :url, format: URI::regexp(%w(http https)) URLの正規表現は真面目に書こうとすると複雑なものになりますが、URI::regexpがURLの正規表現を返してくれるのでこれ…
( ..)φメモメモ FacebookのOGPのメタデータを収集するクローラは、Accept: */*でリクエストを送ってくるようだ。普通のWebブラウザではAccept: text/htmlが入ると思うけど、これを前提にした実装になっているとクローラに対してWebアプリが正しいHTMLを返さ…
Railsでキャッシュストアをファイル(config.cache_store = :file_store)にして、ガンガンキャッシュを活用していると、サイトの規模が大きくなった時にrake tmp:cache:clearが辛くなってくる。やたら時間かかるようになるし、その間サーバの負荷もヤバイ。…
Railsでパンくずリストを実装するのに、breadcrumbs_on_railsを使っています。 これの出力をカスタマイズしたい。 Googleの検索結果にもパンくずリストが表示されるようにしたい。こんな感じで↓ このようにするためには、microdata構造化マークアップを追加…
Heroku Buttonこと、Deploy to Herokuボタンとは、これをクリックすると、自分のHerokuアカウントにサードパーティのWebアプリをデプロイしてくれるという機能。地味なようで結構画期的なサービス。 今回僕も試しにHeroku ButtonでデプロイできるWebアプリを…
個人的にHTMLテンプレートエンジンには昔からかなりこだわりがある大好き分野であり、何度か自作したりもしてきたんだけど、最近はちょっと冷めてきて、ここ最近というか長らく普通にERBを使っていました。 Webデザイナーから納品されたHTMLファイルを尊重す…
Rails Application Templatesを使おう、と思って、やめたわけなので、その代わりに普通に雛形アプリを作っておくことにした。 Webアプリを作る時に定型的に必要になる機能は少なくない。実はこれが結構ボリュームがあるし、機能要件に入らない部分が多いので…
新しくRailsアプリを作る時には、rails newコマンドを叩いて雛形を生成するわけだが、そこから先の準備が結構面倒だ。 いつものGemfileを作って、各設定ファイルいじって、Bootstrap入れて、定形のレイアウト作って、Git初回コミットして、…というやつ。それ…
普段作るRailsのプロジェクトはGitで管理しているので、アプリケーションのアップデート手順というと、sshでログインしてgit pull。あと必要に応じてbundle installやrake db:migrateして、touch tmp/restart.txtで完了。 たいした手間ではないし、昔のよう…
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',…
昨日こんな記事が話題になっていました。 ≫ 登録されるとつらいユーザー名リスト - Qiita ああ、ちょうどまさにこういうルーティングのWebサービスを作っているところだったりすので、とても参考になる情報。ということでサクッとRailsのValidatorにしてみま…
bbatsov/rails-style-guideが非常に参考になりそうなドキュメントだと思ったので、自分で利用しやすいように適当に日本語訳してみたのが1年以上前のことです。 この1年でRailsは4.0になり、セオリーが変わった部分も少なくありません。このガイドの原文は…
ちょうど先ほど、Ruby 2.1.0正式版がリリースされました。すでに「るりま」のほうも2.1.0に対応しているので、拙作「サクサク引けるRubyリファレンスマニュアル」も、るりま2.1.0版にアップデートしました。ついでに1.8.7/1.9.2/1.9.3/2.0.0版も最新版に更新…
rbenvにもRuby 2.1.0がきました。これで気軽に2.1.0を試せますね。HomeBrew環境であれば、まず次のようにしてruby-buildを更新します。 % brew upgrade ruby-build インストール可能なバージョンを確認するには、次のようにします。 % rbenv install --list …
RubyGemsはRubyのライブラリ配布のパッケージ管理システムですが、なんか最近では、SassとかChefとか、Rubyプログラマ以外の人が使いそうなツールがRubyGemsで配布されるケースが多くなってきました。Rubyとか絶対書かなそうなウェブデザイナがgem installと…
DBを使わないようなちょろっとしたアプリを作るような場合は、Railsでは設定ファイルのほうが大きくなってしまう感じで大げさだ。かと言ってPHPは死んでも使いたくない。まあCGIでも十分なんだけど、もっとイケてる方法はないだろうか。 というときRubyでや…
チャットクラーク(chatclerk.com)のRuby 2.0.0 + Rails 4.0.0対応作業を完了しました。相変わらずRailsのアップデートは大変なのですが、3.2時代のアプリであれば、まあそれほどでもない感じですね。2.x時代のアプリだと大変そうだし、もし回帰テストがな…
遅ればせながらJenkinsを試してみました。 継続的インテグレーションは、複数の開発者が関わる大きなプロジェクトにおいて品質を保つための手法として効果的なのは明らかなんですが、いやいや独りプロジェクトでもかなり役立ちそうですよ。テストをサボれな…
Apache+Passengerで、Ruby 2.0.0依存のアプリを動かしたいけど、すでにRuby 1.9.3のアプリも動いているから困った。の解決方法。 Passeger 4.0から、Rubyインタプリタを指定するPassengerRuby設定が、VirtualHostディレクティブの中に書けるようになりました…
今ではBundlerのおかげでプロジェクトごとにgemを管理できるので、システムワイドに色々インストールされてカオスになることはなくなりました。 でもRailsアプリを新しく作る時に困った。アプリ新規作成にはRailsが必要。でもシステムワイドにgem install ra…
いまさら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の安定版が遂に登場しましたね。すでに「るりま」のほうも2.0.0対応のマニュアルが出ているということで、拙作「サクサク引けるRubyリファレンスマニュアル」を、るりま2.0.0版にアップデートしました。ついでに1.8.7/1.9.2/1.9.3版も最新版に更新…
Rails 3 スタイルガイド(bbatsov/rails-style-guide)が良いまとめだなと思ったのですが、僕は英語が苦手なので辛いです。だから自分なりに日本語版を作っておくことにしました。誤訳上等。 自分の理解が不十分のところの訳文は特にヘンテコなままです。Git…
Railsアプリのテストにrequest spec + Capybara(RSpec 2.10.0 + Capybara 1.1.2)を使い始めてみた 。Cucumberみたいに客も読めるみたいな文章風の文法ではないけど、単体テストからRSpecで統一できるのでお気軽。「受入テスト」というより「結合テスト」と…
自分のGitHubが寂しかったので、過去に作ったRubyのちょっとしたユーティリティを公開しました。 ≫ miyamae/ruby-proc_cache どこでも使えるプロシージャキャッシュ。 def calc proc_cache do 重い処理 endend ≫ miyamae/ruby-web_crawler リスナを実装する…