- 1. Ruby学習アウトプット
- 2. 100日後くらいに個人開発するぞ!day064
- 3. 「備忘録」→「Rubyの繰り返し処理について」
- 4. RubyでDSLが書きやすい理由を整理する
- 5. Ruby – ハッシュの初期値を配列にする
- 6. Rails 画像投稿機能(CarrierWave)を実装する
- 7. 選択肢が増やせる診断機能
- 8. 【Rails】rails db:migrateが実行できない / PG::DuplicateTable: ERROR: relation “users” already exists / PG::ObjectInUse: ERROR: database “scaffold_app_development” is being accessed by other users
- 9. 初心者学習メモ スネークケースとキャメルケース
- 10. Railsコールバック、ActiveRecord::Enum
- 11. 【個人開発】通勤時にQiitaのトレンド記事が届くLINE Botを開発した
- 12. 【Rails】Userがいいねした投稿一覧作成
- 13. 【Ruby on Rails】ActionTextとMathJax 3.2で数式を表示できる簡易エディターを実装する
- 14. OpenAPI API仕様書の作成からコード自動生成までやってみた
- 15. DB設計を改修する~Model編~
- 16. ソフトウェアの真の自由を実現するサービス、forgefriendsとは何か!!
- 17. バリデーションエラーが日本語で表示されない。
- 18. scopeの引数のブロック内にメソッドが定義されている場合の挙動
- 19. 最近思うrspecをシンプルにする書き方(オレ流)
- 20. 【Ruby on Rails】rails-latexを利用してPDFを作成
Ruby学習アウトプット
転職活動において、技術試験がいくつか出されており、改めてこちらの本でRubyの勉強をしています。
そのアウトプットとして、よくRailsでみるRubyの記法が解説されていたので、アウトプットさせてください。## nilガード
“`
number||=10
“`
上と下は同じ意味“`
number||(number= 10)
“`もしもnumberがあれば、number なければnumberに10を代入する
### 使うとき
– 変数にnilが入っているかもしれない状況で、nilの代わりになにかデフォルト値を入れておきたい場面で使う
– 認証のcurren
100日後くらいに個人開発するぞ!day064
## 今日はWebアプリケーションについて学んでみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/852b13fc-6588-839a-b80b-1fc093ce3cec.png)
## 今日の学び
### Webアプリとは
* HTMLだけで作成されたWebサイトは作成者が更新しない限り毎回同じものが表示される
* Webアプリではメモを追加・閲覧するなど高度な機能をもつことができる
* WebアプリはiOSやAndroidなどのスマホアプリと異なり、ブラウザから使うアプリ### Webアプリの仕組み
* Webアプリの処理
* ブラウザがサーバーにリクエストを送る
* サーバーはリクエストの内容(URLなど)に応じて処理を実行
* 処理の例
* データベースの操作やデータの取得・追加・更新・削除
* データベースのデータをHTMLへ変換しページ内容を変更
* 処理
「備忘録」→「Rubyの繰り返し処理について」
Rubyの繰り返し処理についてそうだったんだ知識をしったので備忘録として投稿します。
・Rubyでfor文はほとんど使わない。代わりに配列自身に対して繰り返しの命令を送る。
・ブロックの記法でdo…endの代わりに{}を使うことができる。
・Rangeについて、1..5(1以上5以下)と1…5(1以上5未満)とで範囲の違いがある。以上
これから備忘録メインになると思いますが、知識をつけるために継続てきに投稿していきます!
RubyでDSLが書きやすい理由を整理する
## これは何
Rubyは「DSLが書きやすい言語」という説明がされることがあります。
なぜRubyはDSLが書きやすい、と言われるのかを僕なりにまとめてみました。
「こういう要素もあるからだよ」などあればぜひコメントや編集リクエストをいただけると嬉しいです。## DSLの例
DSLとは直訳するとドメイン固有言語です。
簡単なイメージで言うと、「ユーザーが自由に構文に近い仕組みを実装、提供できる」ようなものです。
詳しい説明はWikipediaにお任せします。https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E8%A8%80%E8%AA%9E
RubyやRailsで使われているDSLで有名なものはActiveRecord周りの実装などでしょうか。
例を記載します。“`user.rb
class User < ApplicationRecord validates :name, presence: true has_many :articles
Ruby – ハッシュの初期値を配列にする
“`rb
example_hash = Hash.new{|hash, key| hash[key] = []}
“`ハッシュの要素にいきなり配列としてpush出来たりする
“`rb
example_hash[“foo”].push “bar”example_hash # => {“foo”=>[“bar”]}
“`# 参考
https://simanman.hatenablog.com/entry/2013/09/24/211044
# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
# メンター受付
https://menta.work/user/5694
Rails 画像投稿機能(CarrierWave)を実装する
## 始めに
現在ポートフォリオを作成中で、画像投稿機能を実装したくなった。どうやら`CarrierWave`というgemがあるらしいので実装してみる。## CarrierWave とは
railsアプリに画像投稿機能を実装するための`gem`|単語|意味|
|:-:|:-:|
|Carrier|運搬人、郵便配達員、新聞配達人、運送業者|
|Wave|波、波浪、波動、起伏、うねり|公式ページ
https://github.com/carrierwaveuploader/carrierwave
## 公式ページ(README)を見てみる
>CarrierWave
This gem provides a simple and extremely flexible way to upload files from Ruby applications. It works well with Rack based web applications, such as Ruby on Rails.この`gem`は提供します、Rubyアプリケーションからファイルをアップロードする
選択肢が増やせる診断機能
選択肢が増やせる診断機能を紹介します!!
1.まずはコントローラーの作成
“`ruby:ターミナル&コマンドプロント
rails g controller tests # testsという名前のコントローラーを作成する
“`2.testsコントローラーに記載
“`ruby:tests_controller.rb
class PerfumesController < ApplicationController def index end end ``` 3.tests.index.erbを作成し以下をコピペ ```ruby:tests.index.erbあなたにあった〇〇が1分でわかる 〇〇診断 【Rails】rails db:migrateが実行できない / PG::DuplicateTable: ERROR: relation “users” already exists / PG::ObjectInUse: ERROR: database “scaffold_app_development” is being accessed by other users
### 前提
Rails 6.1.6.1
ruby 2.6.6
database postgresql### 実現したいこと
“`rails db:migrate“`をエラーなく、実行する。### エラー内容の確認
“`rails db:migrate“`を実行したところ、次のようなエラーが出ました。
“`
rails db:migrate
Running via Spring preloader in process 31813
== 20220802023637 CreateUsers: migrating ======================================
— create_table(:users)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:PG::DuplicateTable: ERROR: relation “users” already exists
略
Caused by:
A初心者学習メモ スネークケースとキャメルケース
## スネークケースとキャメルケース
プログラムを始めた際にスネークケース、キャメルケースという言葉を聞きましたが何のこと?
となったので簡単にまとめました。スネークケースとは、単語の間を_でつなぐ命名規則です。
キャメルケースとは、単語の先頭を大文字にする命名規則です。“`
hot_coffee スネークケース
HotCofffee キャメルケース
“`### 命名規則をなぜ用いる?
命名規則がないと、関数や変数、class名がバラバラになり可読性が低くなります。
その結果バグの原因になったりもします。
仕事となればチームで開発することがほとんどです。
命名規則をしっかり守ることで、他の人が書いたコードでも変数なのか、関数なのか、classなのか判断ができるようになります。初心者の私は、人によって見やすさが違い使い方は好みで違うのかな〜なんて思ってました…
実際はそれぞれの言語によって命名規則が決まっているみたいです。### Railsの命名規則
クラス名 : キャメル
それ以外 : スネーク
定数 : 全て大文字Railsコールバック、ActiveRecord::Enum
### コールバックによる制御
**コールバックとは**
特定の処理に引っ掛けて別の処理を呼ぶことをコールバックと言いますメリット
* 前処理、後処理などを宣言的に書くことができる
* 必ず保存後に行いたい処理がある時に、実行の漏れを防ぐことができる**コールバックの基本的な使い方**
(例)
本の名前を保存する前に、名前に”Dog”が含まれていた場合
“Dog Cute”と文字列を置き換える~~~md:
class Book < ApplicationRecord 略 before_validation do self.name = self.name.gsub(/Dog) do |matched| "Dog Cute #{matched}" end end # メソッドを使って書くこともできます before_validation :add_Cute_to_dog(独自メソッド) def add_Cute_to_dog self.name = self.name.gsub(/Dog/) do |matc【個人開発】通勤時にQiitaのトレンド記事が届くLINE Botを開発した
## はじめに
今回は通勤時間を有効活用することができる、通勤時にQiitaのトレンド記事が届くLINE Botを開発しながら**Railsと外部APIの連携**、**LINE Messaging API SDKの使い方**、**LINE Flex Messageの使い方**を学んでいきます。
チュートリアル形式で実際にLINE Botの開発をしながら開発方法を解説していきます。
## この記事の対象者
– LINE Bot開発に入門したい人
– Railsと外部APIの連携手法を学びたい人
– 個人開発でLINE Botを作ってみたい人## 目標成果物
LINE側から「出勤なう」と送られてきたタイミングでQiitaのトレンド記事上位5つを返すLINE Bot。
![IMG_7062.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2695521/cd79cc33-f523-2bf8-296f-882f7b242c66.jpeg)
## LINE Botについて
### LINE B
【Rails】Userがいいねした投稿一覧作成
# はじめに
ユーザーがいいねをした投稿の一覧を見れるようにしたい。
しかし、users_path(indexアクション)は別の用途で使用している。
そこで、routesに新しいルーティングを追加し、専用のページを作成する。
**完成図**
![favorited_posts.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/9d49289d-01ee-3f42-cb9b-6ad0d272478d.gif)# 前提
使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 4 | Kaminari | 1.2.2 |
| 5 |【Ruby on Rails】ActionTextとMathJax 3.2で数式を表示できる簡易エディターを実装する
# はじめに
個人開発にて、Action TextとMathJax(バージョン 3.2) で、簡易的ではありますが数式を表示できるエディターを作成しました。
– [Rails ガイドーAction Text](https://railsguides.jp/action_text_overview.html)
– MathJax
– [GitHub](https://github.com/mathjax/MathJax)
– [ドキュメント](https://docs.mathjax.org/en/latest/index.html)左の画像のように数式を入力してプレビューボタンを押すと、右のように数式が表示されます。
|![スクリーンショット 2022-08-01 16.32.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2519173/2eba4e53-b590-0b26-9c20-75047f21d775.png)|![スクリーンショット 2022-08-01 1.17.04.p
OpenAPI API仕様書の作成からコード自動生成までやってみた
# はじめに
OpenAPIを触る機会があって
* API仕様書の作成
* API仕様書からコードの自動生成を行ったのでその際にやったことを備忘録も兼ねてまとめます。
# API仕様書の作成
API仕様書を作成するにあたってOpenAPIを使用します。
ただ実際動かすまでに以下のような側面があります。* 環境構築が少し面倒
* 環境構築できるまでOpenAPIがどういったものかイメージしづらいなので、
[Swagger EditorのWeb版](https://editor.swagger.io/)
が実際に触って動かせるのでオススメです。コードの横にプレビュー表示してくれて、
かつ非同期で更新してくれるのでAPI仕様書はこれ見ながら作成しました。“` yaml:openapi.yml
swagger: ‘2.0’
info:
description: >-
This is a sample server Petstore server. You can find out more about
Swagger at [http:DB設計を改修する~Model編~
# はじめに
Q&Aアプリを作成しています。DB設計で改修が必要になったので記事にしました。
今回はモデルの関連付けを解消します。## 改修前のDB設計
![Qiita構想前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485354/c54664f0-4379-4035-d530-95e76f5f6b9a.png)
![msg.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485354/4527a299-5f52-72de-6827-095fe090a7fe.jpeg)【解答】
質問(Question)に対して、最初に投稿(アソシエーション)されたCommentのオブジェクト
【コメント】
解答に対して、投稿(アソシエーション)されたCommentのオブジェクト**ややこしい!**
## 改修後のDB設計(予定)
![Qiita構想後.png](https://qiita-image-store.sソフトウェアの真の自由を実現するサービス、forgefriendsとは何か!!
なんとなく[oauth2のGitHubリポジトリ](https://github.com/oauth-xx/oauth2)を覗いたら、Peter Bolingって人が[なんか楽しそうなことをやってた](https://github.com/oauth-xx/oauth2/discussions/622)んですよ。
# [おれはGitHubをやめるぞ!](https://dev.to/pboling/im-leaving-github-50ba)
GitHubはFOSSではない!プロプライエタリで秘密主義だ!
GitHubをFOSS開発に使うことを深く懸念する!!
I’m leaving Github!!
oauthはGitHubをやめるぞ!!とまあそんなようなことを言っています。
# [今こそ!GitHubを辞めるときが来た!](https://sfconservancy.org/blog/2022/jun/30/give-up-github-launch/)
上記記事からリンクされている、[Software Freedom Conservancy](https://sf
バリデーションエラーが日本語で表示されない。
# はじめに
本記事はプログラミング初心者が、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」で学習を進めていくにあたって、つまずいた点、バージョンの違いによるエラーが出た点などを解決した方法を備忘録も兼ねてまとめているものです。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。# 環境
Ruby 3.1.2
Rails 7.0.3.1# エラーが表示されない
![スクリーンショット 2022-08-01 17.29.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737125/f4d06848-5596-44d2-2f70-448f534d8b53.png)・名称を入力せずに登録しようとした時、赤枠のところに日本語でエラーメッセージが出てくるはずなのですが、出てきませんでした。(レイアウトが整っていないのは、ご了承ください?)
まず、そもそもエラー
scopeの引数のブロック内にメソッドが定義されている場合の挙動 # はじめに
Railsのソースコードにて
“`ruby
class Shirt < ActiveRecord::Base scope :red, -> { where(color: ‘red’) } do
def dom_id
‘red_shirts’
end
end
end
“`というコメントアウトを発見。
https://github.com/rails/rails/blob/main/activerecord/lib/active_record/scoping/named.rb#L117-L123
scopeの引数にブロックがあって、その中にメソッドが定義されている。初めて見る書き方だった。
調べてみても意外とどのような挙動をするのか書かれていないので、記事にしてみる。
# 第三引数のブロック内にメソッドを定義するとどうなるか
“`ruby
class Post < ApplicationRecord scope :ids_less_than_five, -> {where(‘id < ?', 5)} d最近思うrspecをシンプルにする書き方(オレ流)
# rspec書き方指南ではない
最近自分でやってみて、テストが意外に楽に書けるのではないかと思うやり方をまとめてみた。
ベストだとか唯一の書き方だとかそういう事を言いたいわけではない。各自自分の好きなやり方で書けばいいと思う。最終的には自分の書いたクラスがちゃんとテスト出来ていれば目的は達成している。個人的な主観としてテストは出来るだけシンプルにしたい。そうじゃないと個人的にテストを書くのが嫌になるし、テストが間違ってて、そもそも何をテストしてるのか?という事になりたくない。
と言うことを解決できるのではないかという投稿。### 要点
– クラス内のメソッド(処理)は出来るだけシンプルにしたい
– 一度しか呼ばれないようなロジックでもメソッドに落とし込みたい
– メソッドが増える分、内部のメソッドと外部向けのメソッドをちゃんと意識する
– itに説明は要らない
– テスト中に使用する変数内容は実際の条件を意識しない
– `subject`と`allow`をよく使う
– `expect(…).to have_received(…)`をよく使う
– `expect{.【Ruby on Rails】rails-latexを利用してPDFを作成
# はじめに
Ruby on Railsで個人開発をした際に、gem [rails-latex](https://github.com/amagical-net/rails-latex)を使って、ユーザーが入力したTeXコードをコンパイルしてPDFを作成する機能を実装しました。
関連する記事があまりなかったので、どのようにしたのかを残そうと思います。# 設定
PDF作成には `LatexToPdf.generate_pdf(code, config)`メソッド([rubydoc](https://www.rubydoc.info/gems/rails-latex/2.3.0/LatexToPdf.generate_pdf))を利用するので、gemをインストール後、その設定を行います。初期設定は以下の通りです。
(注)「・・・」の部分は、`Users/・・・/(appのルートディレクトリ)`が入ります。“`
LatexToPdf.config
=>
{:recipe=>[],
:command=>”pdflatex”,
:arguments=>[“-ha関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた