- 1. Users#show
- 1.0.1. 【超簡単】RubyonRails 投稿時間をInstagramのようにする 〜 ◯日前,◯時間前,◯分前 〜
- 1.0.2. Ruby から Google Custom Search API を叩く
- 1.0.3. Ruby で Natural Language API を叩く
- 1.0.4. Ruby を Crystal にトランスパイル してAtCoder に登録したら解くべき精選過去問 10 問を解いてみた
- 1.0.5. expectation構文
- 1.0.6. プロジェクトのgem, 端末にインストールされるgem,どっちを使うか指定する方法
- 1.0.7. webrickでproxyを作ったときレスポンスのbodyが文字列として取り出せない
- 1.0.8. 【Rails エラー】 NameError (uninitialized constant クラス名)
- 1.0.9. RailsでHerokuに初期データが反映されなくてハマってました
- 1.0.10. 【Ruby】def hoge=(fuga) という書き方
- 1.0.11. ログイン直後の処理を設定する
- 1.0.12. ロガーもどきを作る時のコツ
- 1.0.13. deviseに自動的に設けられているバリデーション
- 1.0.14. 【Ruby】dry-validationでバリる
M1 Mac Homebrew環境のcabocha gemで `ld: library not found for -lcrfpp` が発生する
# 概要
cabochaをhomebrewでインストールしたらcabocha gemのインストールに失敗する。
# 対応
以下でインストールできた。“`
brew install cabocha
bundle config –global build.cabocha –with-opt-dir=”$(brew –prefix)”
bundle
“`もしくは以下。
“`
brew install cabocha
gem install cabocha — –with-opt-dir=”$(brew –prefix)”
“`# NOTE
– 僕の環境は `$ echo $(brew –prefix)` => `/opt/homebrew`
– Homebrewでインストールしたライブラリのパスを共通で通す設定がどこかにあるのかもしれないが見つけられなかった。
【個人開発】正規表現を学ぶ狩りに出ませんか?モンスターを倒しながら正規表現が学べるゲーム「Regex Hunting」を作りました
## はじめに
はじめまして!
個人開発者の[ハガユウキ](https://twitter.com/KvOKJo6SH85w2Q8)と申します。突然ですが、皆さん正規表現はお好きですか?
私は好きです。「複数の文字列を一つのパターンで表現できる」部分にすごく面白味を感じています。
もっといろんな方に正規表現を知っていただきたい、好きになってほしいと思っています。しかし、現状では2つの課題があると感じています。
– 正規表現の勉強自体がそもそも面白くない。
– 正規表現を勉強しても、しばらく使わないと忘れる。この2つの課題を突破できるサービスは、現状存在しません。
そのため、楽しみながら正規表現を学べるサービスがあれば良いなと思いました。**作りました。**
▼スライド型正規表現学習ゲーム【Regex Hunting】
https://www.regex-hunting.com/
(※) 端末はPC、ブラウザはChromeが推奨です。
を管理できるアプリを作成しました。
# 1.はじめに
本記事を閲覧いただきありがとうございます!
転職活動用のポートフォリオとしてRailsでサ活(サウナ活動)の記録を管理するためのアプリを作りました。この記事はアプリの紹介や作成した経緯をまとめたものです。## 自己紹介
– メーカー勤務の24歳。4月で新卒3年目になりました
– 働きながら毎日プログラミング学習中
– サウナとサッカーが大好き# 2.作成したアプリについて
サウナ好きがサ活(サウナ・水風呂・外気浴の時間)を記録して管理するためのアプリです。
– アプリ名: **『ととのい』**– アプリURL: https://totonoi.org/
– GithubURL: https://github.com/matsuken314/onsen_appホーム画面からゲストログインできます。(その他、新規登録画面からも可能です。)

また、より詳しいカテゴリがわ
deviseを使用時に名前を表示できない時の解決方法
## 困っていたこと
以下のコントローラ、ビューの記述でサインイン後ユーザのnameが表示されると思っていましたが表示されません。
rails cなどで調べるとそもそも新規登録時に名前が保存できていませんでした。*users_controller.rb
“`ruby
def show
@user = User.find(params[:id])end
“`
*/users/show.html.erb
“`rubyUsers#show
<%= @user.name %>
“`userテーブルにもnameの記述をしているしどこが原因を調べていました。
“`ruby
create_table “users”, force: :cascade do |t|
t.string “email”, default: “”, null: false
t.string “encrypted_password”, default: “”, null: false
t.string “reset_password_
【超簡単】RubyonRails 投稿時間をInstagramのようにする 〜 ◯日前,◯時間前,◯分前 〜
# はじめに
とっても雑な記事ですが、少しでも誰かに役に立てばと思い記事にしました。## 前提
簡単な投稿機能が実装済みであること
Railsの基礎的な知識を身につけていること## 実装方法
### コントローラー
投稿時間を計算するために、コントローラーで今日の日付や、現在時刻を取得します。“`tweets_controller.rb
class TweetsController < ApplicationController def index @today = Date.today #今日の日付を取得 @now = Time.now #現在時刻を取得 @tweets = Tweet.all #tweeetsテーブルの全レコードを取得 end (略) ・ ・ ・ end ``` ### ビュー 投稿時間に関するところの解説は下に記載しております。 ```erb:tweets/index.html.erb<% @tweets.each do |t| %>Ruby から Google Custom Search API を叩く
# ゴール
以下を Ruby から叩くhttps://developers.google.com/custom-search/v1/overview
# まず REST API を呼ぶまで
– [参考記事](https://webbigdata.jp/what-is-bigdata/google-custom-search-api)を確認しながら事前準備
– プロジェクトの作成
– `https://console.cloud.google.com/home/dashboard?project=[プロジェクト名]`にアクセス出来れば OK
– [該当 API の有効化](https://console.cloud.google.com/apis/library?project=oldnews-natural-language-api)
– [API キーの発行](https://cloud.google.com/docs/authentication/api-keys?hl=ja)
– [Custom Search Engine のRuby で Natural Language API を叩く
# ゴール
以下を Ruby から叩く。https://cloud.google.com/natural-language?hl=ja
# API 呼び出すための準備
[ドキュメント](https://cloud.google.com/natural-language/docs/setup?hl=ja)見ながら「SDK と認証をテストする」をやってみる基本的には、Google Cloud Console からポチポチするだけ
Cloud SDK のインストールで pyenv を入れるところ少しハマった
個人記事ではなく[ドキュメント](https://github.com/pyenv/pyenv#installation)見ましょう(自戒)# Gem から API を叩く
– 前提
– [エンティティ分析で試す](https://cloud.google.com/natural-language/docs/analyzing-entities?hl=ja)
– [リクエスト・レスポンス仕様](https://cloud.google.com/naturalRuby を Crystal にトランスパイル してAtCoder に登録したら解くべき精選過去問 10 問を解いてみた
# はじめに
Atcoderのコンテストにて、Rubyで`TLE`が解消しないこと、ないでしょうか。
私はあります。
`Ruby`のコードを速い言語に`トランスパイル`して欲しいと思ったこと、ないでしょうか。
**私はあります。**https://qiita.com/superrino130/items/8e2040ccd6971f61c0cf
前回記事にて`ripper`の内容が少し理解できましたので、それを`crystal`に応用してみました。
但し、`julializer`は`Ripper.sexp`を使用、こちらは`Ripper.lex`を使用しています。
また、諸先輩の記事を参照させていただきました。
https://qiita.com/tomerun/items/23ce2a2ed6ead291d222
https://qiita.com/universato/items/8a6c311b4db5615fc50a
# Crystallizer
“`rb:crystallizer
require ‘ripper’module Crystallizer
expectation構文
# アウトプット
expectation(エクスペクテーション)とは、
テスト検証で得られた挙動が想定通りなのかを確認する構文。
雛形の基本構造は下記の通り“`ruby
expect(検証で得られた実際の挙動).to matcher(想定した挙動)
“`
# 学んだこと
単体テストコード・結合テストコードや、
検証する機能の種類によって、
expectの引数や、matcherの種類が変わる。
たが今まで使用したものは、基本構造を応用したものであった。プロジェクトのgem, 端末にインストールされるgem,どっちを使うか指定する方法
## gemとは?
2つの意味があります。
1. **Rubyのライブラリ** のことです。詳細は[こちら。](https://www.ruby-lang.org/ja/libraries/)
1. **gemを管理するパッケージ管理ツール**の名前ただ、gemというツールでパッケージを管理すると、依存関係で問題が発生することがあります。
そこでBundlerが登場します。## bundlerとは?
依存関係を考慮してgemを管理してくれるパッケージ管理ツールです。
https://bundler.io## Gemのインストール方法は大きく2種類
1. 端末全体で使えるタイプ(globalインストール)
mac,windows内のどこでも使えるようになる。
1. プロジェクト(特定の階層)でのみ使えるタイプ(localインストール)
作っているアプリの中で使えるようになる。# 結論
### `bundle exec`をつける = ローカルインストールのgemが呼ばれる
例)
“`
bundle exec rails g controller users
“webrickでproxyを作ったときレスポンスのbodyが文字列として取り出せない
ちょっと悩んだのでメモ。
あるWebアプリがどんなパラメータの受け渡しをしてるのか覗いてやろうと思って WEBrick::HTTPProxyServer でプロキシサーバを作りました。その時レスポンスのボディ (WEBrick::HTTPResponse オブジェクト) がなんか Proc オブジェクトになってたので中身が覗けません…。で、こういうふうにやれば覗けましたというメモです。
だめな例
“`ruby
s = WEBrick::HTTPProxyServer.new(
Port: 8080,
ProxyContentHandler: ->(_req, res) {
puts res.body # ここが問題。これじゃ覗けない
})
Signal.trap(‘INT’) do
s.shutdown
end
s.start
“`
だめな例では `#【Rails エラー】 NameError (uninitialized constant クラス名)
Rails cで、Rails: NameError (uninitialized constant クラス名)のエラーに遭遇。
以下を試したところエラーが消えました。
“`
$ exit #rails cから一旦出る
$ spring stop
$ rails c #もう一度、rails c
“`RailsでHerokuに初期データが反映されなくてハマってました
# はじめに
seeds.rbを本番環境に反映させようとしたがうまくいかずに困ってました。
無事にherokuに反映することができたので、メモ用に投稿します。
## 自分の環境
* Rails 6.0.3
* Ruby 2.6.3
* AWS Cloud9
## 前提
seeds.rb作成済み
## 初期データの投入方法
### ローカルの設定を完了させる
“`
$ rails db:migrate:reset
$ rails db:seed
“`
### gitにプッシュする
“`
$ git add -A
$ git commit -m “メッセージ”
$ git push
$ git push heroku
“`
### Herokuのデータベースをリセットする
“`
$ heroku pg:reset DATABASE
“`
### herokuでマイグレーションを実行する
“`
$ heroku run rails db:migrate
“`
### seedデータを投入
“`
$ heroku run rails db:seed
“`
これで初期データの【Ruby】def hoge=(fuga) という書き方
# 本題
Qiita や企業の技術ブログを見ていて,`def hoge=(fuga)` という書き方がありました.“`ruby
class Author
def authors_attributes=(attributes)
@person_attributes = Person.new(attributes)
end
end
“``hoge=` で一つのメソッド名を表しています.
値の設定専用のメソッド(つまりセッター)ということを表すために,よく使われる書き方みたいです!知りませんでした!呼び出すときは,以下のような書き方だけではなく,
“`ruby
Author.authors_attributes=(attribute)
“`
以下のような書き方もできるみたいです.
“`ruby
Author.authors_attributes = attribute
“`# 参考記事
https://teratail.com/questions/248629下の記事では,セッターの関数名に`hoge=` という書き方が使われ
ログイン直後の処理を設定する
### 結論
**ログイン後に処理を追加する時はwardenのコールバックを使う。**“`
Warden::Manager.after_set_user do |user,auth,opts|
auth.cookies.permanent[‘cookie名’] = ‘cookie値’
end
“`
(ここではログインしたらcookieに値をセットしたい場合の処理を例にしている。)**wardenのafter_set_userコールバックの使い方**
https://nekorails.hatenablog.com/entry/2018/10/27/172832#:~:text=warden%27%5D.logout(%3Aadmin)-,callback,-callback%E3%81%A8%E3%81%AFコールバック内で、ログインをしたユーザに対して処理をしたい場合はブロックで渡している「user」を使う。
**注意**
ここで注意なのは、userをdeviseのcurrent_user感覚で使わないこと。こういう時にエラーになる↓
ログインに使うクラスがロガーもどきを作る時のコツ
“`sample.rb
def put_log(message)
puts “#{`hostname`.chomp}:#{caller.first}:#{message}”
enddef method_a
put_log(‘メッセージ’)
endmethod_a
“`実行結果
“`
LAPTOP-5EMLK46H:sample.rb:6:in `method_a’:メッセージ
“``LAPTOP-5EMLK46H` は私のノートPCのマシン名。
どのマシンでのどのプログラムのどのメソッドでの出来事なのかというのが大事。
deviseに自動的に設けられているバリデーション
# アウトプット
deviseを用いて、ユーザー情報を管理するモデル(Userモデル)を作成すると、
下記の通りになる。##### app/models/user.rb
“`ruby
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end ``` 5行目の`:validatable`という記述が、 deviseにより自動的に設けられているバリデーションを指している。 バリデーションは下記の通りである。 ###### email - 存在すること - 一意性であること - @を含むこと ###### pa【Ruby】dry-validationでバリる
# 概要
Validationを良い感じにやってくれるgemを現在使っているため備忘録として記事を書いていく。
ここでは特に`dry-validation`と`dry-strcut`を解説!# 使うまでの流れ
## 1.Gemをインストール“`bash
$ gem install dry-validation
$ gem install dry-struct
“`## 2.基底クラスを作成
“`ruby
class ApplicationContract < Dry::Validation::Contract config.messages.default_locale = :ja # デフォルトメッセージを日本語に変換 config.messages.backend = :yaml config.messages.load_paths << 'config/contract/error.yaml' # 任意のエラーメッセージを書くロケールファイルのpath EMAIL = /.@./ # メールバリデーション用 PHONE_NUMBER = /関連する記事
OTHERカテゴリの最新記事
- 2023.09.29
iOS関連のことを調べてみた2023年09月29日
- 2023.09.29
Ruby関連のことを調べてみた2023年09月29日
- 2023.09.29
Python関連のことを調べてみた2023年09月29日
- 2023.09.29
Rails関連のことを調べてみた2023年09月29日
- 2023.09.29
Python3関連のことを調べてみた2023年09月29日
- 2023.09.29
PHP関連のことを調べてみた2023年09月29日