- 1. オリジナルアプリのコメント機能を非同期で投稿出来るように変更した時の備忘録
- 2. メソッド の 定義 と 戻り値
- 3. 【Ruby on Rails】愛犬管理アプリpart2 ~タスク編~【初心者向け】
- 4. Rubocopにserverモードができたみたいなので試してみる ~RubyKaigi 2022に影響されるエンジニア~
- 5. [エラーメッセージ]”ActiveRecord::PendingMigrationError”解決までの流れ
- 6. Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
- 7. ruby debugを使ってみた話 ~RubyKaigi2022に触発されたエンジニア~
- 8. 本番環境でActionMailerを動かす 【Rails Heroku Gmail】
- 9. RubyKaigi 2022 09/09(2日目) 参加レポート
- 10. Ruby での デバッグ方法
- 11. Basic認証の導入(健忘録)
- 12. 編集ページをモーダルで表示したのでメモ
- 13. ActionCable ルーム別チャット
- 14. Rubyで文章生成AI「GPT-2」を実行して遊んでみた
- 15. RubyKaigi 2022 09/08(初日) 参加レポート
- 16. Rails Heroku error: failed to push some refs to ~が出た時
- 17. Herokuデプロイでハマったエラー
- 18. Rails7 devise_token_authエラー
- 19. Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
- 20. 【Ruby on Rails】devise_invitableを使った招待機能実装編 【初心者向け】
オリジナルアプリのコメント機能を非同期で投稿出来るように変更した時の備忘録
オリジナルの写真と投稿アプリを作成した時にコメント機能に後からAjaxで実装してみようと思ったらかなり手こずったので忘れない為に備忘録を残します。
投稿した写真にログインしたユーザーがコメント出来る機能になってます。### コントローラーの編集
投稿した写真の詳細ページにコメントしたいのでアクションはcreateとdestroyの二つ
画面遷移はしたくないのでrenderやredirectの記述はしない
@comment = Comment.find(params[:id])をdestriyメソッドの下に書くと意味がないので一番上に記述する
“`:comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = Comment.new(comment_params)
@comment.save
enddef destroy
@comment = Comment.find(params[:id])
@post = Post.find
メソッド の 定義 と 戻り値
# 目的
– メソッド の 使い方 を 理解する# ポイント
– メソッド とは まとまった一連の処理 のこと
– メソッドの最後に処理した値は呼び出し元に戻される# 書き方の例
“`ruby
def buy_fruitsapple = “apple”
if apple == “apple”
puts “りんごを渡す”
elsif banana == “banana”
puts “バナナを渡す”
elsif lemon == “lemon”
puts “レモンを渡す”
end
endbuy_fruits
“`
~実際の表示~
りんごを渡す
# 注意するポイント
– 「puts」という命令の戻り値は nill となる# 具体的な例
– 上記の例に apple という 戻り値を返すようコードを追加する
“`ruby
require “pry”def buy_fruits
apple = “apple”if apple == “apple”
puts “りんごを渡す”
elsif banana
【Ruby on Rails】愛犬管理アプリpart2 ~タスク編~【初心者向け】
# 本記事の内容
本記事は、[こちら](https://qiita.com/tak8_al/items/08274dd9228363642555)の記事の続編です。
その記事で実装した内容をもとに、実装していきますので、まだご覧になっていない方は、ぜひご覧ください。
以下の内容の実装方法だけ知りたいという方は、このままご覧ください。## 本記事での実装内容
① 実行時間の情報を持ったタスクの作成機能
② 当日のタスクのみ表示する機能
③ 全ての実行日の情報を持ったカレンダー作成機能
④ どのペットに対するタスクか表示する機能
⑤ タスクを実行する人間を表示する機能
⑥ 実行時間に自動メール送信する機能
⑦ タスク完了時にメール送信機能では実装していきましょう。
# 実行時間の情報を持ったタスクの作成機能
タスクの実行時間がindexページに表示されるタスクアプリケーションを作成します。
手順は2つです。!* CRUD機能を持ったアプリケーションの作成
* 時間を日本時間に変更順に実装していきましょう。
## CRUD機能を持ったアプリケーションの作成
Scaffo
Rubocopにserverモードができたみたいなので試してみる ~RubyKaigi 2022に影響されるエンジニア~
## 概要
RubyKaigi 2022にて「Rubocopにserver-client的なものが実装され処理が早くなった」という話を聞きまして、実際に試したくなり試したっていう話です## やり方
適当なRubyファイルを用意します### 通常起動
“`sh
time bundle exec rubocop .
“`
結果(複数回実行)1.22s user 0.32s system 99% cpu 1.545 total
1.30s user 0.33s system 96% cpu 1.697 total
1.26s user 0.32s system 97% cpu 1.622 total
1.20s user 0.30s system 99% cpu 1.516 total### server起動版
サーバーの起動
“`sh
bundle exec rubocop –start-server
“`
Rubocopの実行
“`sh
time bundle exec rubocop .
“`
結果(複数回実行)0.53s user 0.11s sys
[エラーメッセージ]”ActiveRecord::PendingMigrationError”解決までの流れ
# 1.前提条件
#### 開発環境
Ruby:ruby 3.1.2
Rails:Rails 6.1.6.1
OS:Windows11 Home# 2.エラーメッセージの内容
![error_img](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2823804/86d78dc1-3403-0fb3-1814-8ee88992c7f5.png)
#### ②エラーメッセージ翻訳
エラーメッセージを翻訳する
”移行は保留中です。 この問題を解決するには、次を実行します。
bin/rails db: RAILS_ENV=development を移行
保留中の移行が 1 件あります:
20210727061455_create_books.rb”#### ③エラーの原因を考える (※考えられる原因は随時追記することとする。)
今回のエラーはmigrateし忘れているというものである。
考えられる理由を下記に記述する。・単純にrails db:migrateし忘れている
#
Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較
# Python
https://qiita.com/Morio/items/10d33f6dbb0845ae5038
# Ruby
https://qiita.com/Hashimoto-Noriaki/items/f406bcfb00e79e3937d0
# PHP
https://qiita.com/miriwo/items/2c2aa77d5de66c074ec5
# Java
https://qiita.com/takahirocook/items/05bfe37bb4ba64f3a78e
# JavaScript
https://qiita.com/kaz7991/items/7f98cc17c4df9ab6a009
# Perl
https://perlzemi.com/
ruby debugを使ってみた話 ~RubyKaigi2022に触発されたエンジニア~
RubyKaigi2022の方に参加してきまして、そちらの方で「debug」というツールの話を聞きそういえば一生`pコマンド`で出力していたと思い試して見たくなりました。
ということで実際触ってみての感想とかを書いていきます。## 前準備
今回使ったコードはこちら
Gemfile“`gemfile
source ‘https://rubygems.org’gem ‘nokogiri’
gem ‘debug’
“`crawler.rb
“`rb
require ‘net/http’
require ‘uri’
require ‘nokogiri’
require ‘kconv’def main
uri = URI.parse(“https://qiita.com/itaya”)
request = Net::HTTP::Get.new(uri)req_options = {
use_ssl: uri.scheme == “https”,
}response = Net::HTTP.start(uri
本番環境でActionMailerを動かす 【Rails Heroku Gmail】
## 環境
– Ruby3系
– Rails6系
– Heroku
– Gmail
## 実現したいこと
– ActionMailerを使って本番環境でパスワードリセットメールを送信できるようにしたい。
## 現状– 本番環境でメール送信できない。(ActionMailerがうまく動かない)
– 開発環境ではうまく動いている。(letter oppner webで確認した。)
– エラーがいくつか発生した。`Rails Missing host to link to!`や`Net::SMTPAuthenticationError (535-5.7.8 Username and Password not accepted. Learn more at)`**といったエラー。
## 解決策
一言で言うとdevelpment.rbの編集とGmailの設定をしないといけない。
これをやっていなかったのでうまくいかなかった。
## Gmailの設定
Gmail側の設定については以下の記事が参考になった。
[https://skillhub.jp/courses/137/lessons/97
RubyKaigi 2022 09/09(2日目) 参加レポート
# はじめに
RubyKaigi 2022に参加してきましたのでそのレポートです。
[RubyKaigi 2022](https://rubykaigi.org/2022/)
## 前日のレポートはこちら
https://qiita.com/yoshiki-0428/items/b3a64e2f03efc9394f39# Event
RubyKaigiではKeynote以外のイベントがありました。多くの企業の協賛やノベルティを配っていました。
[https://rubykaigi.org/2022/events/](https://rubykaigi.org/2022/events/)
![Screenshot_20220908-092014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134845/8b61206d-e6bc-8cd1-8715-999450eb9060.png)
## ○×クイズ
賞金10万アマゾン券をかけた○×クイズ、弊社の一人が最後まで当てていて1万円を手に
Ruby での デバッグ方法
# 目的
– ruby における デバッグ方法 を 理解する。# ポイント
– デバッグ とは プログラムの手直し のこと。
– 問題点の確認 に用いる。
– ファイル の先頭に require “pry”
– binding.pry は pry の 拡張ツール# 書き方の例
“`ruby
require “pry”def double(i:)
i*2
endbinding.pry
result = double(i:3)
puts result“`
~実際の表示~
4: i*2
5: end
6:
7: binding.pry
8:
=> 9: result = double(i:3)
10: puts result# 注意するポイント
– biding.pryの後にコードがないと、動作が終了しない。# 具体的な例
“`ruby
require “pry”japanese_score = 30
english_score = 20binding.pry
total =
Basic認証の導入(健忘録)
## RailsのAppにBasic認証を導入する
全てのコントローラーで行いたいため`application_controller.rb`に記述する
“`app/controllers/application_controller.rb
class ApplicationController < ActionController::Base before_action :basic_auth private def basic_auth authenticate_or_request_with_http_basic do |username, password| username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] # 環境変数で呼び出す end end end ``` ## (補足) 環境変数の設定 vimコマンドで設定ファイルの`.zshrc`に記述する ```:ターミナル % vim ~/.zshrc ``` 通常モー
編集ページをモーダルで表示したのでメモ
### Bootstrapでモーダルを使用した投稿機能を実装したので編集もモーダルで編集したかったので実装してみた
Bootstrap5とJQueryはCDNで読み込んでいる。
コントローラーは通常通り記述
“`:recioes_controller.rb
def index
@recipes = Recipe.all
@recipe = Recipe.new
enddef create
Recipe.create(recipe_params)
@recipes = Recipe.all
enddef edit
@recipe = Recipe.find(params[:id])
enddef update
@recipe = Recipe.find(params[:id])
@recipe.update(recipe_params)
redirect_to root_path
enddef destroy
recipe = Recipe.find(pa
ActionCable ルーム別チャット
## やりたいこと
複数のチャットルームが存在し、チャットルームごとにメッセージを表示する。
## やるべきこと
これを実現するには「ユーザーがどのチャットルームに属しているか」という情報を、ActionCableの各処理に渡さなければいけない。
## 前提
リアルタイムチャット機能は既に実装済み。
## 用語
ルーム別チャットを実現するにはActionCableに関する用語やデータの流れを理解しておいた方が捗る。この図説付きの記事が分かりやすかった。([https://qiita.com/ksugimori/items/d5f4630858eeb56d9da5](https://qiita.com/ksugimori/items/d5f4630858eeb56d9da5))
## 手順
1. チャットルームにid属性を持たせる
2. ビューから特定のユーザーとチャットルームの情報を取得する
3. 取得したユーザーとチャットルームのパラメータをサーバー側に送る
4. パラメータをもとにデータを取得する
5. パラメータをもとにストリームを作る
6. ストリームを指定してブロードキャスト
Rubyで文章生成AI「GPT-2」を実行して遊んでみた
## はじめに
Python 以外の言語から AI にアクセスするのは難しすぎると考えている人が多いと思います。しかし、最近は、事前トレーニング済みのモデルが多数公開されており、さまざまなプラットフォームやプログラミング言語から AI 推論を簡単に実行できるようになっています。 ここでは、Ruby 言語から ONNX ランタイムを実行して英文を生成できる GPT-2 モデルで遊んでみたいと思います。 ONNX ランタイムを使用すると、推論は簡単に実行できます。
## 事前準備とインストール。
下記の3つのGemをインストールします。
* [onnxruntime](https://github.com/ankane/onnxruntime-ruby) – ONNX Runtime のRubyバインディングです。
*
RubyKaigi 2022 09/08(初日) 参加レポート
# はじめに
RubyKaigi 2022に参加してきましたのでそのレポートです。
[RubyKaigi 2022](https://rubykaigi.org/2022/)
# Event
RubyKaigiではKeynote以外のイベントがありました。多くの企業の協賛やノベルティを配っていました。
[https://rubykaigi.org/2022/events/](https://rubykaigi.org/2022/events/)
![Screenshot_20220908-092014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134845/b4ddf1b8-5145-69d7-8fba-c318d97fa804.png)
# Today’s Schedule
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134845/1fd11843-363a-2aea-869
Rails Heroku error: failed to push some refs to ~が出た時
今回、Herokuのリリースで`error: failed to push some refs to ~`のエラーが
出たのですが、うまくまとまっている記事がなかったので、まとめました!
(何か誤りがあれば、コメントください?)# error: failed to push some refs to ~の種類
1. pushするブランチ名の誤り
1. config/database.yml中に記述ミス
1. HerokuのサポートするRubyのバージョン違い# 1. pushするブランチ名の誤り
こちらは至極簡単で、コマンドを変更するだけで良いです!
“`zsh:ターミナル
# デフォルト(git branch -M mainなどしていない場合)
% git push heroku master# デフォルトのブランチ名がmainの場合(git branch -M mainしている場合)
% git push heroku main# 現在のブランチ名がデフォルト以外の場合, 今回のブランチ名はdev
% git push heroku dev:master
“`
Herokuデプロイでハマったエラー
# 背景
学習の教材を終えて自分でオリジナルアプリを作っていた。# 環境
PC:MacOS
フロントエンド:HTML/CSS/SCSS/Javascript
フレームワーク:Bootstrap5.2.0/Jquery3.6.0
バックエンド:Ruby 2.6.5
フレームワーク:Ruby on Rails 6.0.5.1
インフラ:Heroku-18 stack# エラー内容
“`
remote: rake aborted!
remote: NoMethodError: undefined method `size’ for nil:NilClass
remote: /tmp/build_fe25ab3a/vendor/bundle/ruby/2.6.0/gems/sass-3.7.4/lib/sass/util.rb:157:in `merge_adjacent_strings’※以下省略・・・
remote: Tasks: TOP => assets:precompile
remote: (See
Rails7 devise_token_authエラー
### エラー内容
“`
gem ‘devise’
gem ‘devise_token_auth’
“`
Gemfileに上記の2つを追加して
“`
$ bundle
“`
を実行すると
“`
Fetching gem metadata from https://rubygems.org/………
Resolving dependencies….
Bundler could not find compatible versions for gem “rails”:
In snapshot (Gemfile.lock):
rails (= 7.0.3.1)In Gemfile:
rails (~> 7.0.3, >= 7.0.3.1)devise_token_auth was resolved to 0.1.21.alpha2, which depends on
rails (~> 4.1.4)Running `bundle update` will rebuild your snapshot from sc
Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較
# Python
https://qiita.com/imuimu/items/7f27d156dd0f6507803b
# Ruby
https://qiita.com/k-penguin-sato/items/1a6c8096effccb19565a
# PHP
https://qiita.com/wakahara3/items/bcadef53367097765c82
# Java
https://qiita.com/ts7i/items/d7f6c1cd5a14e55943d4
# JavaScript
https://qiita.com/andota05/items/fc1e340642be42ca47c0
# Perl
https://perlzemi.com/blog/201
【Ruby on Rails】devise_invitableを使った招待機能実装編 【初心者向け】
# 本記事の内容
[初心者向け] ポートフォリオに愛犬管理アプリを作ってみた話[Ruby on Rails]の付属記事です。
ご覧になっていない方は、[こちら](https://qiita.com/tak8_al/items/08274dd9228363642555)からご覧ください。devise_invitableの使い方だけ知りたい!という方は、このままご覧ください。
当記事は、Deviseの実装は一通り終わっていてサインインもサインアップも実装できている前提です。
まだ行っていない方は、[こちら](https://qiita.com/tak8_al/items/265b080674456398d56e)をまずはご覧ください。# 開発環境
MacBook Air (M1, 2020)
Rails 6.1.6.1
ruby 3.0.1
yarn 1.22.19# 導入手順
* devise_invitableの導入
* 招待用のカラムの追加
* 招待ページの生成
* ユーザー名の追加
* routing設定
* 導入確認順にやっていきます
# devise_invi