Help us understand the problem. What is going on with this article?

自作gemをダウンロード数が多い順に紹介

More than 3 years have passed since last update.

自作gemをダウンロード数が多い順に紹介

by sue445
1 / 17

自己紹介

  • sue445
  • ドリコム 所属
    • サーバサイドをアプリからインフラまで浅く広く
    • 最近 http://dabimas.jp/ (ダビスタスマホゲームの公式サイト兼事前予約サイト)作りました
      • Ruby 2.3.1 + Rails 5.0.0.1
  • 好きなエディタは Vimと RubyMine
  • 好きなプリキュアは キュアピース

My profile

https://rubygems.org/profiles/sue445

image


  • 最近はペース落ちたけど社内外合わせるとだいたい月1個ペースでgemを新しく作ってる :gem:
    • ググって見つからなければとりあえず作ってる
  • 今回はrubygems.orgのダウンロード数が多い順に上からいくつか適当に紹介

rubicure

https://github.com/sue445/rubicure


よく分かるサンプル

maho_girls.gif

https://github.com/sue445/rubicure/blob/70aad9c325419afb744e625f52ff3d530e90d14d/examples/maho_girls.rb


よく分かる解説

プリキュアのタイトルを出力

puts Precure.maho_girls.title
#=> 魔法つかいプリキュア

Cure.xxxx でインスタンスを取得

@mirai = Cure.miracle
puts @mirai.name
#=> 朝日奈みらい

キュアップ・ラパパ!で変身 2
自分自身が変化する破壊的メソッドなのでRubyの慣習に則ってメソッド名の末尾に ! がついています

@mirai.cure_up_rapapa! :diamond
# キュアップ・ラパパ! ダイヤ!
# ミラクル・マジカル・ジュエリーレ!
# ふたりの奇跡!キュアミラクル!
# 魔法つかいプリキュア!!

変身すると名前が変わります

puts @mirai.name
#=> キュアミラクル(ダイヤスタイル)

attack! で必殺技を出します
敵を攻撃する破壊的メソッドなのでRubyの慣習に則ってメソッド名の末尾に ! がついています

@mirai.attack!
# リンクルステッキ!
# ダイヤ!永遠の輝きを私達の手に!
# フルフルリンクル!
# プリキュア・ダイヤモンド・エターナル!

humanize! で人間に戻ります
自分自身が変化する破壊的メソッドなので(ry

@mirai.humanize!
puts @mirai.name
#=> 朝日奈みらい

魔法つかいプリキュアでは変身の時に使うリンクルストーンの種類によって別の形態に変身することができます

@mirai.cure_up_rapapa! :ruby
# キュアップ・ラパパ! ルビー!
# ミラクル・マジカル・ジュエリーレ!
# ふたりの奇跡!キュアミラクル!
# 魔法つかいプリキュア!!

puts @mirai.name
#=> キュアミラクル(ルビースタイル)

@mirai.attack!
# リンクルステッキ!
# ルビー!紅の情熱よ私達の手に!
# フルフルリンクル!
# プリキュア・ルビー・パッショナーレ!

paraduct

https://github.com/sue445/paraduct


20160811002700.png


heart_seed

https://github.com/sue445/heart_seed


rspec-temp_dir

https://github.com/sue445/rspec-temp_dir

  • テストコード中で一時ディレクトリを手軽に作るためのgem
  • プロダクトコードでファイルを作ってるような場合に、出力先を temp_dir にしていればわざわざ after(:each) でファイルを消す必要がなくなって便利
  • 詳しいこと:rspec-temp_dir をリリースしました - くりにっき

fluent-plugin-out_chatwork

https://github.com/sue445/fluent-plugin-out_chatwork


activerecord-simple_index_name

https://github.com/sue445/activerecord-simple_index_name


Example

db/migration/create_user_stoks.rb
create_table :user_stocks do |t|
  t.integer :user_id,    null: false
  t.integer :article_id, null: false
  t.timestamps null: false
end

add_index :user_stocks, [:user_id, :article_id]
  • activerecord-simple_index_name無し: index_user_stocks_on_user_id_and_article_id(43文字)
  • activerecord-simple_index_name有り: user_id_and_article_id(22文字)

index_shotgun :fire: :gun: :cop:

https://github.com/sue445/index_shotgun

  • 不要なインデックスを検出するためのgem
  • 名前の由来は SQLアンチパターン
  • pt-duplicate-key-checkerとだいたい一緒だけどactive_recordベースなのでMySQL以外でも使える
    • MySQL, PostgreSQL, SQLite, Oracle対応
  • 詳しいこと:index_shotgunを作った #omotesandorb - Qiita
  • 最近だとビルドスクリプトに組み込んで、不要インデックスがあったらPullRequestの時点でビルドが失敗するようにしてる
  • 面白い試みとして、Travis CIとWerckerを両方使ってる
    • Travis CIだとOracleが使えない
    • Oracleのインストールが超絶面倒くさいので、Oracleインストール済のDockerfileをWerckerで使ってる

One more thing

gem開発の知見はだいたいここに全部書いた


  1. メンテナなので自分のプロフィールページにも載ってる 

  2. 全シリーズ共通なのは transform! ですが、シリーズ固有の変身名乗り(例:Go!プリンセスプリキュアだと princess_engage!)も全てサポートしています 

sue445
https://twitter.com/sue445
http://sue445.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away