rails
Rails で OAuth 連携の機能を作う場合、一般的に OmniAuth を使うことになります。 そして、 OmniAuth の Qiita Strategy が3つあったので、それぞれ状況をまとめました。 各 gem の概要 GitHub rubygems version work? tmiyamon/omniauth_qiita omniauth_qi…
6/1(木) の表参道.rb でLTしてきました。 omotesandorb.connpass.com 資料 「他人がどうやって Ruby/Rails を学んできたのか?」って意外と聞く機会は無いと思うので、自分のふりかえりも兼ねて発表してみました。資料は Qiita で公開してます。 qiita.com …
技術書典は書く側で参加したい気持ちはあるけど、書くネタと書く時間があるかどうか…— 神速@リリカルエンジニア (@sinsoku_listy) 2017年4月9日 あー、自分の知ってるRailsアンチパターンとか書きたいかも。自分の犯した罪(アンチパターン)を贖罪したい…。— …
CircleCI 2.0 が使えるようになっていたので、アップグレードしておいた。 CircleCI の設定 今まで circle.yml だったけど、 .circleci/config.yml に変わっている。 Ruby の設定例は Language Guide: Ruby があるので、これを参考にすると良い。 version: 2…
普通にみんなやっていることだと思うけど、自分が gem を入れるときに最低限やることをまとめてみた。 何かしらの方法で探してきた gem を「導入するかどうか」の判断をするときにやることです。 やること一覧 今後もメンテされそうかを調べる README を 全…
Rails アプリから機能を gem 化する方法の実例を1つ公開してみる。 sinsoku.hatenablog.com rake notes を拡張する rake notes で Rails アプリ内の "OPTIMIZE|FIXME|TODO" を一覧表示できるが、これを拡張する。 ソースコードの探し方 rails/rails のリポジ…
これから Rails 用の gem を作ってみたい人向けの内容。 gem 化する 実は下記のようなコードを置くだけで RubyGems に登録しなくても、 gem として認識される。 Gemfile gem 'hello_world', path: 'lib/hello_world' lib/hello_world/hello_world.gemspec # …
Rails の link_to_if にブロックを渡したときの挙動が分かりづらいので、使う場合の注意点をまとめてみました。 TL;DR ブロックの内容を条件によってリンクにしたい場合は capture を使うのがシンプルで良いです。 <% body = capture do %> <%= image_tag 'i…
ブログをサボりすぎているので、備忘録でも書くようにしておく。 やったこと ちょっと詳細書くのが難しいんだけど、処理自体を抽象化して扱おうとしたら、こうなった。 module Task class Base attr_reader :args def self.arguments(&block) klass = Class.…
Rails で Web 上から SSH 鍵を生成したくなったけど、方法がなかなか見つからなかったから書いておく。備忘録。 コード Gemfile に gem 'net-ssh' を追加して、↓みたいなモデルを作ればうまくできた。 class SslKey < ActiveRecord::Base belongs_to :user v…
Heroku で mperham/sidekiq を使おうと思ったら、 Error fetching job: ERR max number of clients reached が大量に出るようになってしまいました。 ログがいっぱいになり、Sidekiq.❨╯°□°❩╯︵┻━┻ したくなった。 エラーの原因 今回、 Heroku Redis の hobby…
Rails では Resource Routing: the Rails Default とあり、基本的には resources もしくは resource を使います。 では、 get や match はどういう時に使うのか? について、私が使ってる例を3つ紹介します。 1. gem などで使う場合 intridea/omniauth のよ…
Rails で RESTful な Web API を作る場合、色々な方法があると思います。 今回、私が API を作るときによくやっている設計をブログに書いてみます。 コード 説明するより、コードを見てもらった方が早いと思うので、コードを書く。 # config/routes.rb names…
最近、 colszowka/simplecov のバグを踏みました。 こうやって 不運にもバグを踏んでしまった 運よくOSSに貢献できるチャンスを得てしまったときの原因調査の方法などを紹介します。 今回のバグ simplecov はカバレッジ率を計測するgemで、以前から便利に使…
タイトルの通り、 &. を使うとエラーが出てたので対応方法を紹介します。 Inspecting 1 file E Offenses: app/models/user.rb:11:21: E: unexpected token tDOT user.piyo if user&.admin? ^ 1 file inspected, 1 offense detected 対応 1 bbatsov/rubocop …
コード内で長い年月熟成されたTODOに頭を抱えているRailsエンジニアの方々、お疲れ様です。 これ以上のTODOが生まれないように、CIで検知するためのコード書いたので、参考にどうぞ。 参考 rails/source_annotation_extractor.rb at master · rails/rails ht…
ActiveRecord::Callbacks は便利なのですが、テストでモデルを作るたびにメール送信の処理が動いたり、別モデルが生成されると困る。 このあたりをthoughtbot/factory_girlを使って綺麗に書く方法を紹介します。 コード FactoryGirl.define do factory :user…
小ネタ。 Rakefile if Rails.env.development? require 'rubocop/rake_task' RuboCop::RakeTask.new task(:default).clear task default: [:rubocop, :spec] end rspec/rspec-railsによって、defaultが指定されているので一度削除してから再設定してます。 …
intridea/omniauth はFacebook, Twitter, GitHub, など色々なストラテジに対応しています。 List of Strategies を見ると、とても多いのが分かると思います。 OmniAuth.strategies 自分のアプリで対応しているストラテジ*1の一覧は OmniAuth.strategies で取…
plataformatec/devise と intridea/omniauth を使って、Twitterでも、Facebookでも、GitHubでもログインできるような機能を作る方法を書いておく。 最初に devise には Omniauthable という「これ使えば簡単に実装できるよ!」って雰囲気のmoduleがいます。 …
タイトルの通りですが、作りました。 sinsoku/pretty_validation これは何? DBのスキーマからvalidationを自動生成します。 validates_presence_of (NOT NULL制約から生成) validates_numericality_of (columnの型から生成) validates_uniqueness_of (UNIQU…
Forkwell Bar #4 で mini_style というgemを作りました。 インストール方法 Gemfileに mini_style を入れて、 bundle install で入ります。 何ができる? 手抜きして、README.md からコピペ。 style('alert') # => 'alert' style('alert', 'alert-danger': !…
2015/12/31 追記 GitHub の protected branches によって、Pull Requestのブランチにmasterからマージできる仕組みが導入されました。 Pull Request として出したブランチをrebaseするという操作は推奨されない方法な気がするので、KeepFFは終わらせました。…
werckerでmysqlのutf8mb4を使う方法が分かったのでまとめておく。 参考にしたページ MySQL :: MySQL 5.7 Reference Manual :: 14.12 InnoDB Startup Options and System Variables https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html Rails - …
railsでは標準だとデータベースに必要な初期値の設定にdb/seeds.rbを使います。 ただ、db/seeds.rbだとデータの追加・変更や、再実行などが難しくなりがちです。 で、この辺りを便利にするgemはThe Ruby Toolboxで探すといくつかあります。 Seed-fu Ruby Too…
ponytail とは? Railsのマイグレーションファイルをweb上で作成したり、web上でマイグレーション・ロールバックを実行できるようにするgemです。 インストール方法 Gemfileの:developmentのgroupにgemを追加し、bundle installしてください。 group :develo…