pockestrap

Programmer's memo

Web

activerecord-originator をリリースしました

こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見る…

Kaigi on Rails 2021 で登壇しました

先日Kaigi on Rails 2021で、Cache on Railsというテーマで登壇しました。 参加者としての感想は雑に日記に書きましたので、この記事では登壇者としての感想を書きます。 各種資料 スライド スピーカーノートを開くと(ほぼ完全な)トークスクリプトもついてい…

Ovtoでコンポーネントに閉じたStateを作る

結論 実装に無理があるので、OpalからReactを使いたい。 これ何 Ovtoはhyperappをベースにしている。Ovtoではstateはappに対して1つのツリーしかない。 つまり、各コンポーネントに閉じたstateを持つことはできず、全てはグローバルなstateを触ることになる…

Action Mailerのpreview機能を使って、Railsアプリケーションから送るメールを一覧するページを作った

ある時「アプリケーションがどういうタイミングでどういうメールを送るか、エンジニア以外も把握したい」という要望が社内で上がりました。 これはもっともな要望で、アプリケーションがどういうメールを送っているのか分からずユーザーサポートするのはしん…

Ruby用オンラインパーサーのBacon Cannonに、URLのシェア機能を追加しました

Bacon Cannon とは? bacon-cannon.herokuapp.com Ruby 用のオンラインパーサーです。Web上から Ripper 及び Parser gem を使用して Ruby のコードをパースし、AST を眺めることが出来ます。 シェア機能 今回は、この Bacon Cannon にパース結果をシェアする…

Vim からいい感じに tig blame する

TL;DR git blame しない人は読まなくていい。 nnoremap <F3> :silent! !tig blame +<C-r>=line('.')<CR> %<CR>:redraw!<CR> .gvimrc では nnoremap <F3> :silent! !sakura -x 'tig blame +<C-r>=line('.')<CR> %'<CR> sakura は適当なターミナルエミュレータの名前に置き換える。 <F3> は完全に趣味なの</f3></cr></cr></c-r></f3></cr></cr></cr></c-r></f3>…

Rails Best Practices を3~4倍ぐらい速くした話、あるいはStackProf入門

github.com TL;DR StackProf でボトルネック検出 String#present?は遅いから使わない。 何度も呼び出される毎回同じ値を返すメソッドをメモ化 上記により3~4倍のパフォーマンス改善 はじめに Rails Best PracticesはRailsに特化したコードメトリックツールで…

rails-apiでcookieを使う

最近、rails-apiでcookieを使うような機会が何度かあったので、その方法をメモしておきます。 tl;dr rails-api with cookie · pocke/rails-api-with-cookie-sample@11ccaf1 前置き rails-apiのデフォルトでは、cookieが無効化されています。 そのため、セッ…

もっと便利に rails g migration する

前置き Railsには、DBのマイグレーションファイルを作成する為のジェネレータ、rails g migrationがあります。 例えば、usersテーブルにemailカラムを追加したい場合、このジェネレータは以下のように使います。 $ bin/rails g migration AddEmailToUsers em…

都道府県のマスタテーブルを作るGemを作った

つくりました github.com todofuken | RubyGems.org | your community gem host Ruby on Rails 用に、都道府県のマスタテーブルを作成するGemです。 Rails の generator を利用しています。 Installation 普通のGemと同じように、Gemfileに以下を記載します…

www v0.3.0 をリリースした

www のバージョン 0.3.0 をリリースしました。 :tada: github.com www 自体の説明は以前別の記事(楽々静的HTTPサーバー - pockestrap)でしているので、もしご存知なければそちらをご覧ください。 --binding オプション このリリースでは、--bindingオプショ…

楽々静的HTTPサーバー

静的なHTTPサーバーが欲しくなること、多々あると思います。 SPAを作っている時 クライアントサイドのみのWebアプリを作っている時 人にちょっとファイルを渡したい時 こんな時に、カレントディレクトリ以下をサーブするだけのHTTPサーバーが欲しくなると思…

Ruby on Rails で、スキーマ定義からモデルのファイルを生成する

Migration だけ先にがーーーっと書いたらモデルを作るのがめんどくさくなったので、Rakeのタスクを書きました。 gist.github.com 上記ファイルをlib/tasks/model_from_schema.rakeなどとして保存して、下記のようにコマンドを実行すると使用することが出来ま…

Railsで、Layoutを適用した静的なエラーページを生成してみた

こんにちは。私は現在 bearfruits という GitHub と連携した就活支援Webサービスを作成、運営しています。 bearfruits はRuby on Railsで開発しています。 エラーページがRailsデフォルトのままだったのを改善したので、手順をまとめます。 環境 Ruby on Rai…

Vue.js について LT をした。

先日、ポート株式会社様で開催されている、もくもく会に行ってきました。 第10回【フリースタイル】もくもく会【学生歓迎!】 - connpass 当日、LT発表者が3名しかいなかったため、飛び込みLTと言う形で突然LTしてきました。 実際飛び込みが多くて、結局8人…

speak-jsが面白そうだから使ってみた

speak-js mattytemple/speak-js · GitHub 作ったもの pocke/speak.js-sample · GitHub speak-js とは クライアントサイドJavaScriptだけで喋る。 speak('foo')でfooって喋る。 楽しい感じがしますね。 作ったもの Speak.js Sample テキストエリアに入力した…

neocomplete用のjQueryの辞書を作った

辞書の使い方とかはneocomplete用にRubyの辞書を作った(るりま編) - pockestrapを見れば良いと思います。 Script require 'open-uri' require 'json' url_base = 'https://api.github.com' owner = 'jquery' repo = 'api.jquery.com' ep_base = "#{url_base}…

markdownでもタグにclassや属性を付けたい!!

kramdownならできるよ、それ。 class [hoge](http://example.com){: .fuga} # => <a class="fuga" href="http://example.com">hoge</a> id [hoge](http://example.com){: #fuga} # => <a id="fuga" href="http://example.com">hoge</a> attributes [hoge](http://example.com){: target="_blank"} # =>

Github pages + jekyll を使って、Markdownで静的Webページを書いた

作ったページ レポジトリ Github pagesでホスティングされた静的Webページを、Jekyllを使ってMarkdownで書いてみました。 ページを作成して、Githubにレポジトリを作成して、独自ドメインを割り当てるまでのまとめ。 ローカルにWebページを作成する まずは、…

Vim戦闘力を計測するWebページ つくった

世の中には、Vim戦闘力と言う概念があります。 Vim-users.jp - Hack #39: Vimの戦闘力を計測する 簡単に言うと、.vimrcの行数です。 ただし、単純に行数で見てしまうとコメントや空行、行継続などでいくらでも戦闘力を水増し出来てしまいます。 そのような点…