コンテンツにスキップ

Ruby

Emacs連携

Emacs参照.

Gemのアンインストール

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 gem list --no-versions | grep "^[a-z]" | xargs gem uninstall -aIx
 ```

## rbenv
```sh
brew install rbenv
brew install ruby-build

rbenv install --list # => インストール可能なバージョン一覧の表示
rbenv install 3.0.0  # => rubyのインストール
rbenv rehash         # => rbenv の再読み込み
rbenv global 3.0.0   # => defaultで使うrubyのバージョン
ruby -v

Ruby on Rails

ActiveSupport::MessageEncryptor::InvalidMessage

  • 参考
  • rails sでこのエラーが出ていた.
  • credentials.yml.encファイルを削除しからrails credentials:editコマンドをもう一度実行する
  • これでcredentials.yml.encが再生成され, この上でrails sすれば実行できる(できた)

bundle installした後はrails s再実行

タイトル通り: bundle installしたらrails sを再起動すること.

devise

登録できない: (デフォルトでは)パスワードは長めで

  • 参考
  • コンソールから次のようにエラーを調べる
1
2
3
4
5
rails c

> user = User.new(email: "hoge@hoge.com", name: "testname", password: "pass")
> user.valid?
> p user.errors
  • パスワードが短いと次のようなエラーが出る: user.errorsを見ればよい.
1
2
#<ActiveModel::Errors:0x0000562c12446b70 @base=#<User id: nil, email: "hoge@hoge.com", created_at: nil, updated_at: nil, name: "testname">, @errors=[#<ActiveModel::Error attribute=password, type=too_short, options={:allow_blank=>true, :count=>6}>]>
 => #<ActiveModel::Errors:0x0000562c12446b70 @base=#<User id: nil, email: "hoge@hoge.com", created_at: nil, updated_at: nil, name: "testname">, @errors=[#<ActiveModel::Error attribute=password, type=too_short, options={:allow_blank=>true, :count=>6}>]>
  • attribute=password, type=too_shortだからパスワードが短い.

Mac(M1 Mac, monterey)でmysql2がインストールできない

  • brewでmysqlをインストールしたあと次のコマンドを実行したか確認
1
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc`
  • bundle installしてエラーが出たらメッセージを確認
  • ld: library not found for -lsslが出ていたら次を実行
    • これはMacの標準のSSLが/usr/bin/opensslでLibreSSL 2.8.3だから.
    • 以下対応しているOpenSSLに修正
1
2
3
4
5
6
brew install openssl
brew list openssl

...
/opt/homebrew/Cellar/openssl@3/3.0.2/bin/openssl
...
  • 参考
  • 次のコマンドを実行してopensslを使うように設定
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
brew list openssl

...
/opt/homebrew/Cellar/openssl@3/3.0.2/bin/c_rehash
...

brew link --force openssl@3
echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
bundle install
  • さらに情報を確認
1
2
3
4
5
6
7
brew info openssl@3 | grep LDFLAGS

export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"

bundle config --local build.mysql2 "--with-ldflags=-L/opt/homebrew/opt/openssl@3/lib"

bundle install

Twitterで言うフォロー・フォロワーの関係を作りたい

コマンド

1
2
3
4
rails c # コンソール立ち上げ
rails s # 起動
rails db:migrate
rails g rspec:model user

新機能を作る

1
2
3
rails g model relationship following_id:integer follower_id:integer
rails g controller relationships create destroy
rails db:migrate
  • routes設定

データベースを見たい

  • A5SQLを入れよう: MacでもWineを使えば導入できる
  • rails cでコンソールを立ち上げてPost.allPost.find(id)を実行するとある程度は代替可能

ログ

1
debugger.log("some string")