- 1. ActiveRecordで、実際に発行されているSQLのクエリを標準出力に出す
- 2. 【Rails6】SNS(Twitter)シェア機能の実装
- 3. link_toネストの際に青い点が出現!消す方法
- 4. 【Ruby】?THE HOUSE OF THE DEAD CODE??♀️?♂️
- 5. 自己紹介とよくあるエラーについて
- 6. form_forについて
- 7. Ruby学習#99 自分用プログラミングノート
- 8. Ruby学習#2 Drawing a Shape
- 9. 【祝!出港】お気持ちほっこりサービス「それゆけ はこぶね かんしゃ丸」
- 10. Herokuコマンドまとめ
- 11. RuboCopの起動が遅い問題の対策としてのrubocop-daemon
- 12. [Ruby] then キーワードと case in
- 13. Ruby 配列の基礎的なメソッド
- 14. Railsを使ってブックマーク機能をAjax化
- 15. [Ruby on Rails] kaminariの使い方
- 16. 【Ruby】モジュール
- 17. irb でサクっとパフォーマンスを調べる
- 18. 【Ruby】真 (true) とは何か
- 19. Rails の credentials.yml.enc と master.key の関係性について(undefined method `[]’ for nil:NilClass (NoMethodError))
- 20. 【rails】railsとjsを用いて「いいね機能」を実装してみた
ActiveRecordで、実際に発行されているSQLのクエリを標準出力に出す
ActiveRecord::Base.logger = Logger.new(STDOUT)
【Rails6】SNS(Twitter)シェア機能の実装
#はじめに
記事の閲覧・検索ができるアプリケーションの作成中です。
今回記事の内容をSNS(Twitter)でシェアできる機能を実装しました。備忘録のため記述します。#環境
Ruby on Rails ‘6.0.0’
Ruby ‘2.6.5’
FontAwesome導入#viewファイルの編集
data-text=”~”などでオプションをつけることで、ツイートに表示されるテキストの設定などができるようです。
#参考
https://www.howtonote.jp/twitter/button/index4.html
こちらの記事を参考にさせていただきました。ありが
link_toネストの際に青い点が出現!消す方法
#はじめに
link_toを使用してパスを指定したら、font awsomeの下に変な青い点が表示されるようになってしまいました。
![スクリーンショット 2020-12-24 10.54.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864210/79edbb2c-9073-2a67-8a80-f473b444e9af.png)
今回はこの謎の青い点を消していきたいと思います。#原因
この青い点の正体はなんでしょうか?
link_toで要素をネストしたら表示されるようになったので、aタグにデフォルトでついている下線ではないかと考えました。#解決策
まずはfont awsomeの右下に表示されているので`iタグ`に`text-decoration: none;`を付けてみましたが変化なし。次に`aタグ`に`text-decoration: none;`を付けてみましたがこちらも変化なし。
ここでaタグにデフォルトでついている下線ではない可能性も疑いましたが、他の可能性が思いつかな
【Ruby】?THE HOUSE OF THE DEAD CODE??♀️?♂️
この記事は **[闇の魔術に対する防衛術 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/yaminomajutu)** の24日目の記事です。
明日、最終日はカレンダーの作成者でもある **@nfujita55a** さんの **よく知らないアプリケーションの性能と戦わないといけないときの防衛術(後編)** です!!
—
# THE HOUSE OF THE DEAD CODE
標示されるrubyのコードから、 **デッドコードとなっている `Am I dead?` 部分を、制限時間内に全てクリック** してください。
コードは、**ruby 2.7.2** で **`ruby` コマンドで起動** されるものとします。
自己紹介とよくあるエラーについて
こんにちは!
まず簡単な自己紹介をさせて頂きます。プログラミング初心者のmizutaniと申します!
メーカー向けの営業を2年ほど経験した後、本格的に学習を始めました。
元々プログラミングは好きで、大学生の頃から簡単なHTML,CSS,Javascriptの書籍を読んで、学習したりしていました。
きっかけは大学2年生の時に参加したインターン。
ビジネスコンテストで優勝したことで、ビジネスアイデアを考えるのは面白いと思い、そこから学習開始。
テックアカデミーで1ヶ月フロントエンドを学んだこともありました。しかし周りの影響で、大手志向になり、新規ビジネスとは無縁の会社に。
営業は楽しかったし、成績も良かったのですが、思い切ってチャレンジすることにしました笑ただrubyは触り始めて2ヶ月ほど。
毎日試行錯誤しながら取り組んでいます。そんな自分が書くテーマは
##「よく初心者が陥るエラー」です。最近プログラミングを学ぶ人が増えていることは嬉しいことです。
単純に仲間が増えるという意味で励みになるのですが、
エラーで嫌になってしまう人も多いと思います。
(自分も高校生の頃、
form_forについて
##概要
特定のモデルを編集・追加したい時に使う。##使い方
“`ruby:new.html.erb
form_for [引数] do |f|
~
end
“`引数にはモデルのインスタンスを指定。(@reviewなど)
##メリット
formを投稿した際に自動で切り替えてくれること
DBへの保存まで行えること##form_tagとの使い分け
form_forはDBに保存したい内容がある時に使用
form_tagはDBに保存しなくていい時に使用##一例
“`ruby:new.html.erb
form_for [@review] do |f|
f.text_field :name
end
“`これで
“`ruby:new.html.erb
“`
と同義になる。f.htmlタグ :カラム名
で記述する。
form_for内におけるメソッドはformに使用するhtmlタグの分だけある。
Ruby学習#99 自分用プログラミングノート
ruby構文
print文
print “hello World”puts文
puts “Mike is cool”※puts文は自動で改行される。
print文は改行されない。
Ruby学習#2 Drawing a Shape
本日の学習内容
print 文とput文の違い
print 改行しない
puts 改行する◎実装したコード
# Your code here!
puts “Mile”
puts ” is cool”
print “Girafe Academy”
print “Mile”
puts ” is cool”
puts ” /|”
puts ” / |”
puts ” / |”
puts “/___|”◎環境デザイン
・学習を阻害する要因を消し去った(スマホのyoutube動画)
●明日やること
・【継続】既に基礎学習を終了しているため、プログラミングノートの作成に注力し、あまり時間をかけないこと。
・Atomの環境構築 atom-runnerのインストール
【祝!出港】お気持ちほっこりサービス「それゆけ はこぶね かんしゃ丸」
ハッピーメリークリスマス! こんにちは、オンライン英会話サービスを提供する株式会社ベストティーチャーでRailsエンジニアとして元気に働く たわら です。
本記事は[クソアプリ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/kuso-app)の24日目の記事です。
# 悪の情報って伝播しやすいですよね
悪の連鎖ってありますよね。悪口・悪事の情報がまた同じような情報を引き寄せてしまうというような。「弱いものたちが夕暮れ、さらに弱いものを叩く」なんてブルーハーツの詞もあります。こういうときにボクは頭を抱えてしまいます。悪の連鎖に対して、一人の人間としてどう立ち振る舞ったらいいのだろうかと。
そしてボクは、アプリを作ることにしました。
# 善の情報を伝播させればいいのでは?
かの村上春樹は小説かエッセイのどこかで「いつの時代も善と悪が半々だと認識している。人間の中でも半々」うんぬんと語っていました。たしか。そして、かのカート・ヴォネガット・ジュニアは小説かエッセイのどこかで、「なるべく人生の良い面だ
Herokuコマンドまとめ
# はじめに
コマンドをまとめておくと便利だと思いこの記事を作成した。
また、前提としてHerokuアカウントを作成しているということ。
#Herokuを使う理由
通常デプロイには多くの時間と費用がかかるがHerokuは基本無料でデプロイの手間が少ないから。
# まとめる内容
・Herokuインストールコマンド
・ログインコマンド
・アプリケーション作成コマンド
・MySQLを使用できるコマンド
・暗号化した値の管理
・Heroku上にデプロイ
・マイグレーションファイルを実行
・公開したアプリケーションの確認
・デプロイ後のエラー##Herokuインストールコマンド
コマンド“`
brew tap heroku/brew && brew install heroku
“`
バージョンを確認コマンド“`
heroku –version
“`
##ログインコマンド
“`
# ログインコマンド
heroku login
“`
下記の表示が出ればログイン成功。“`
Logged in as sample@sample.com
“`
##アプリケーション作
RuboCopの起動が遅い問題の対策としてのrubocop-daemon
この記事は [Opt Technologies Advent Calendar 2020](https://qiita.com/advent-calendar/2020/opt-technologies) 17 日目記事です
これもまた遅刻しました。何一つ間に合っていない(死)16 日目の記事は @checche さんの 分析コードの書くコツ or 統計モデリングの実装(未公開) です
18 日目の記事は @___uhu さんの そろそろ競馬AIができそう(未公開) です—
RubyのLinter兼Formatterとしてデファクトの[RuboCop](https://github.com/rubocop-hq/rubocop) というgemがあります
割とお世話になるんですが、フロントエンドでPrettierやESLintを使ってファイルの保存の度にLint/Formatを実行していた身からすると起動が遅すぎてとてもじゃないけどファイルの保存の度に実行できるような状態じゃありませんでした
世の中には同じような課題感を持った人がいたらしく、[rubocop-daemon
[Ruby] then キーワードと case in
# TL; DR
`case` – `in` によるパターンマッチング構文でも、`case` – `when` と同じように `then` が使える (場合によっては使う必要がある)。
# `then` とは
使われることは稀だが、Ruby では `then` がキーワードになっている。次のように使う:
“`ruby
if cond then
puts “Y”
else
puts “N”
end
“`このキーワードが現れうる場所はいくつかあり、`if`、`unless`、`rescue`、`case` 構文がそれに当たる。
上記のように、何か条件を書いた後 `then` を置き、式がそこで終了していることを示すマーカーとして機能する。“`ruby
# Example:if x then
a
endunless x then
a
endbegin
a
rescue then
b
endcase x
when p then
a
end
“`# なぜ普段は書かなくてもよいのか
普通 Ruby のコードで `then`
Ruby 配列の基礎的なメソッド
Rubyの配列で使う基礎的なメソッドについてメモしていきます。
`ruby 2.6.5p114`
#配列に追加、削除
まず適当な配列を用意“`ruby
$ animals = [“dog”, “cat”, “rabbit”]
=> [“dog”, “cat”, “rabbit”]
“`* **push** 配列の末尾へ要素を追加
* **unshift** 配列の先頭に要素を追加“`ruby
$ animals.push(‘bear’)
=> [“dog”, “cat”, “rabbit”, “bear”]
$ animals.unshift(‘monkey’)
=> [“monkey”, “dog”, “cat”, “rabbit”, “bear”]
“`
* **pop** 配列の末尾から要素を1つ削除
* **shift** 配列の先頭から要素を1つ削除“`ruby
$ animals
=> [“monkey”, “dog”, “cat”, “rabbit”, “bear”]
$ animals.pop
=> “bear”
$ animals.sh
Railsを使ってブックマーク機能をAjax化
#はじめに
Railsアプリで実装したブックマーク機能を同期処理から非同期処理に変更する方法を紹介します。非同期通信とは一言で表すと、
**「画面は再読み込みしないけど、画面の表示は変えるよ」**
となるかと思います。より一般の人が非同期通信を利用する例を述べると、Twitterの投稿に「いいね」をする時とかが挙げられます。
Ajaxに関する説明は既にネット上でたくさんの参考文献がありますので、本記事で詳しい説明はしません。
もしAjaxについて知らなければ、下記に参考記事を記載しますので先にそちらをまずは読んでください。[初心者目線でAjaxの説明](https://qiita.com/hisamura333/items/e3ea6ae549eb09b7efb9)
#同期通信でのブックマーク機能
掲示板の投稿アプリにAjax機能を追加します。
(投稿にはダミーテキストを使っているのでタイトルや内容は無視してください)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810
[Ruby on Rails] kaminariの使い方
#kaminariとは?
rubyのgemの一つで、ページネーションを作るためのものです。#kaminariのインストール
以下を `Gemfile` に追加します。
“`
gem ‘kaminari’
“`ターミナルでインストールします。
“`
$ bundle install
“`
#コントローラーにページネーションのコードを追加“`
class PostsController < ApplicationController def index @posts = Post.all @posts = Post.page(params[:page]).per(15) end end ``` `page(params[:page]).per(15)` の部分でページあたりいくつ表示させるかを設定します。 ページネーションが表示されるのは、表示される数が設定した数より多い場合です。 #ビューファイルにページネーションのコードを追加 ビューでページネーションを表示させる場所に追加します。 ``` <%= paginate @posts
【Ruby】モジュール
# モジュール
– 「インスタンス化できないクラス」のようなもの。
– `Class` クラスは `Module` クラスのサブクラス。
– 「クラス = モジュール + インスタンス化能力」## Mix-in
– 制限された多重継承
– Rubyは、クラスは1つしか継承できない。
– Rubyは、モジュールという「クラスのようだがクラスではない」ものならば何個でも継承できる。
– クラスがモジュールを継承することを `include` すると呼ぶ。### モジュールと継承
– `include` したモジュールはクラスの `ancestors` メソッドに現れる。
– **クラスがモジュールを `include` すると、モジュールのインスタンスメソッドが手に入る**。
### インスタンス化不能性
– モジュールをインスタンス化することはできない。
– Mix-inはあくまでも「トッピング」。主となるクラスに従として実装を提供するための「機能の集まり」(module)であり、具体的なもの(object)ではない。## 名前空間
–
irb でサクっとパフォーマンスを調べる
irb の進化が止まらない。最も先進的な REPL は Ruby の irb かもしれない[^b]。複数行編集,シンタックスハイライト,オートインデント,メソッド名補完は衝撃的だった。
[^b]: 他の言語の REPL を知らずに書いてますので各言語愛好者のマサカリ・オシカリを歓迎します。
さて,2020 年 12 月 20 日リリースの irb 1.2.8 で measure という機能が追加された。
これは式の評価にかかる時間を計測してくれるもの。Ruby で 100 万番目の素数を表示するのは
“`rb
require “prime”
p Prime.lazy.drop(999999).first
“`でいい。答えは 15485863。
これがどのくらいの時間で実行されるのかが知りたいことがある。計測手段はいくつもあるが irb 上でサクッとできるなら,それはそれで嬉しい。では
“`rb
gem update irb
“`で最新の irb をインストールしておこう。記事執筆時点(2020/12/23)での最新は 1.2.9 だ。
そして,
“
【Ruby】真 (true) とは何か
最近技術書を読んでいて、わかった気になってるなーと思い、
細かいことでも頻繁にアウトプットしていくことにしました。未来の自分のための記事です。
※検証Rubyバージョン: 2.7.2
## 結論
Rubyでは`false`と`nil`以外のすべての値が真です。## TrueとFalse
Rubyにおいて、すべてのデータ・値は何らかのクラスに属するオブジェクトです。
もちろんtrueやfalseも例外ではありません。“`bash
irb> true.class
=> TrueClass
irb> false.class
=> FalseClassirb> true.class.ancestors
=> [TrueClass, Object, Kernel, BasicObject]
irb> false.class.ancestors
=> [FalseClass, Object, Kernel, BasicObject]
“`falseとnil以外が真であるなら、`0`や` `(空文字)も真です。
“`bash
# 「0」は true
irb> p 0
Rails の credentials.yml.enc と master.key の関係性について(undefined method `[]’ for nil:NilClass (NoMethodError))
職場で運用している Rails で作成した、顧客と収益アプリの公開用 clone を作成する際に、題名のところでハマったのでメモ用として残しておきます。
## 経緯
1. GitHub のプライベートリポジトリからローカルにソースコードを clone
2. プライバシー情報を削除後、`.git`ファイルを削除して、アプリ名(folder 名)を`_v2`へと変更
3. `git init`して、リモートリポジトリへプッシュ
4. CircleCi と連携させて、master に merge されたタイミングで自動テストを組む
5. RDS を本番環境の db にしたいので、ローカルで`credentials.yml`に、RDS の情報を打ち込む設定を行う(このとき、`credentials:edit`コマンドを一度使用して、なぜか一度 credential ファイルを削除、`credeitials:edit`コマンドで再作成という謎の手順を踏んでいます)
6. ECR にコンテナデプロイして、ECS のタスクを実行しようとしたところ、ECR のコンテナが起動していない
7. 開発用
【rails】railsとjsを用いて「いいね機能」を実装してみた
# 今回はrailsとjsでいいね機能を実装していきたいと思います
** また最後におまけでユーザーがいいねした投稿を表示できるような機能も実装していきます**
jsを読み込んだりする説明は割愛!
**参考にさせていただいた記事**
https://techtechmedia.com/favorite-function-rails/
https://qiita.com/hayabusa3703/items/2b916e652a1dc85bb6e3##### 完成予想図
![スクリーンショット 2020-12-22 21.34.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/197c1930-4b7e-3226-a255-f1457299f362.png)
##### 下準備
ユーザーはたくさんの投稿にいいねをして、投稿もたくさんのユーザーにいいねされるので
likesテーブルを中間テーブルにした、ユーザと投稿の多対多のテーブル構造
“`
rails g m