fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

【Ruby】文字列において、同一文字が連続しているかどうかを判定する

やりたいこと

文字列において、同一文字が連続しているかを判定する
例えば、 '123abbbc' は 'b' が3文字連続していることを判定したい

利用場面

パスワードのvalid判定などにおいて、「同一文字が連続していないこと」をチェックしたい場合など

やり方

正規表現の後方参照を使い、ある文字をキャプチャし、その直後で同一文字が存在するかを確認

後方参照って何?という場合は下記
初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」 - Qiita

具体例

# 3文字以上連続した文字列が存在する場合、Invalidとして弾く
password = '123abbbc' 
if password =~ /(\w)\1{2,}/ 
  puts 'Invalid password'
end

Rails - 複数レコードの一括登録でパフォーマンスを向上させる

JavaでいうaddBatch、executeBatchで一括登録する方法をRailsでもできないかを探した。
activerecord-import gemを使うとRailsでも同様のことが可能とのこと。

利用方法、パフォーマンス比較等

Qiita

qiita.com

RubyMine - ローカルDBを閲覧する

データベースの中身を確認するときは、rails consoleでちまちま確認するより直接DBを見たい。

RailsチュートリアルではDB Browser for SQLiteでデータ閲覧しますが、RubyMineだとSQLite以外のデータベースも対応しています。

やり方

RubyMineからローカルのSQLiteに接続する | mawatari.jp
初めての場合、Test Connectionが出来ないはず。その場合、ウインドの下に出てくる「Download」を。
SQLite以外の場合、データソース選択時に該当のDBを選択するだけ。

(補足)DB Browser for SQLiteを使う方法

Railsチュートリアルの該当箇所のリンク貼っときます。
https://railstutorial.jp/chapters/modeling_users?version=5.0#sec-database_migrations

(別にいらんけど)一言

前職の社内ツールを思い出してちょっと感傷的に。。。
そして、RubyMine何でもできてスゴイ。

Bootstrap4でFont Awesomeを使う(3のGlyphiconsが使えなくなりました)

Bootstrap4では、Bootstrap3で使えたGlyphiconsが使えなくなり有料化されました。代替案の一つが、Font Awesomeへの移行です。その方法を書きます

公式からリンクをGET

下記リンクを踏むと「Start Using Free」と出てくるのでクリックすると、リンクが出てきます。そのリンクをheadタグに貼り付けるだけです。CDN以外で利用する場合は、リンクがある画面で下にスクロールをするとダウンロードする方法や各言語でのインストール方法が書いてあります。
fontawesome.com

GETしたリンクをheadタグに貼り付け

<!DOCTYPE html>
<html>
  <head>
    <!-- 略 -->
    <!-- 下記のようにペースト -->
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
  </head>
  
  <!-- 略 -->    
</html>

使いたい記号を探す

5000弱あるので、かならず見つかるはず。これ無料で使えるって凄い...
お、無料だと1500弱ですね。それでもヨイヨイ。biohazardなんかの記号もある。
https://fontawesome.com/icons?d=gallery

コーディング

下記は星を表示させる場合の例

<i class="fas fa-star"></i>

Rails5でのlocale設定(日本語化、国際化対応)

Rails 5での設定方法

config/initializers/locale.rb

I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
I18n.config.available_locales = :ja
I18n.default_locale = :ja

rails newした時点でconfig/localesにen.ymlの辞書ファイルがあるはずなので、jaも足せば良い。

Rails 4までの設定方法

config/application.rb

config.i18n.default_locale = :ja