- 1. 【Rails初心者】Chart.jsの使い方
- 2. 【Rails】Herokuでのお問い合わせフォームの作成方法
- 3. 文字列と数値を使う!
- 4. 【Rails×LIFF】 モテたい人向けのマッチングアプリ完全攻略サービス 「マッチングアプリマスター」 を作りました。 (男性向け) 【個人開発】
- 5. 【備忘録】git pushでのerror “src refspec main does not match any”
- 6. 【Ruby on Rails】よくあるエラー集
- 7. 【Rails】コントローラーの処理を共通化したい
- 8. Sonic PiからLogic Proのソフトウェア音源を使う
- 9. CSV.parse で空のフィールドを必ず空文字に変換する
- 10. ユーザー管理機能初期手順②!
- 11. Railsチュートリアル2週目を終えて
- 12. 【Ruby】case whenによる条件分岐
- 13. Rubyではシンボルと文字列ならシンボルの方が早い
- 14. VS Code で自動的に RuboCop を実行する (rbenv, asdf 対応)
- 15. 【Ruby on Rails】簡単なAPI作ってみた
- 16. CRUD処理 Ruby on Rails(データベース編集方法)
- 17. データベースにおけるデータの編集や削除の方法まとめ
- 18. `Bio::GenBank` なオブジェクトをファイルに書き出す
- 19. ユーザー管理機能初期手順①!
- 20. [Rails]初心者でほぼぶっつけ本番で映画レビューサイトを作ってみた件
- 21. Rails secret_key_baseをherokuの本番環境で適用する
【Rails初心者】Chart.jsの使い方
グラフ(折れ線グラフ、棒グラフ、レーダチャートなど)を書くのに優れているrubyライブラリを学習しましたので、記録のために残します。
#公式ドキュメント
[Chart.js公式サイト](http://www.chartjs.org)#使い方
##① rails newしてアプリ作成
“`
% rails new chart
“`まず学習用のファイルを作成します。
## ② controllerとroutesの設定
コントローラーを作成します。
“`
% rails g controller home
“`続いてコントローラーにindexメソッドを作成します。
“`ruby:app/controllers/home_controller.rb
class HomeController < ApplicationController def index # 追記 end end ``` コントローラーの記述が終わったらルーティングを作成します。 ```ruby:app/confing/routes.rb Rails.application.ro
【Rails】Herokuでのお問い合わせフォームの作成方法
## お問い合わせフォームの実装
利用環境
・ruby 2.7.3
・Rails 6.1.4## 前提
お問い合わせフォームでメールを受信するためのメールアドレスを作成
ここではGmailを登録する前提で進めます。## Gmailアカウントの設定
・2段階認証に設定する
・アプリで利用するためのパスワードを作成
リンク先:https://myaccount.google.com/u/3/security## ActionMailerの設定
本番環境のみでの設定とします。
開発環境でのメール確認に興味がある方はこちらを参考にしてみてください。
https://github.com/fgrehm/letter_opener_web“`terminal:ターミナル
touch config/initializers/mail.rb
“`“`ruby:config/initializers/mail.rb
if Rails.env.production?
# 自身のドメインに置き換えてください
host = “Herokuのサブドメイン.herokuap
文字列と数値を使う!
#①.irbコマンド
ターミナルを用いたプログラムの記述と実行をします!
プログラムを実行する際、「逐一ファイルに記述し、実行」という手順は踏まないこととします!
代わりに、irbというコマンドで起動する簡易プログラム実行機能を利用します!
irbコマンドは、ターミナルから直接Rubyのプログラムを動かすことができる機能を起動します!
ちなみに、irbは「Interactive Ruby」の略です!
今回はirbコマンドという機能を使って、ファイル無しでプログラムを実行します!
“`php
(例)ターミナル
# irbを起動
% irb
“`irbではエンターキーを打つたびに、そこまでの記述を実行して結果を表示する!ということが分かります!
irbを終了するときは、exitと記述して実行します!
“`php
# irbを終了
irb(main):001:0> exit# 問題なく終了すれば、プロンプトが表示される
%
“`値を簡単に確認するときはirbを使います!
#②.Rubyにおける値
数や文字をはじめ、プログラムで扱うデータを「値」と言
【Rails×LIFF】 モテたい人向けのマッチングアプリ完全攻略サービス 「マッチングアプリマスター」 を作りました。 (男性向け) 【個人開発】
# サービス概要
![マッチングアプリマスター トップページのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/5b55db01-0083-8a4f-1a8a-a2c37478f7c7.png)
対応端末は`iPhone X 以降(スマホ)`を推奨しております。
LIFFアプリ(LINEで動くWebアプリ)なのですが、外部ブラウザ(SafariやChrome)からも開くことが出来ます。
※ 二極化URL:https://dating-apps-master.com/top
Github:https://github.com/ryuki7/dating-apps-masterマッチングアプリを利用しているが女性と上手くいかない、女性の扱い方がわからない、女性との出会いが無くて困っている人に
目的別に適したマッチングアプリを導き出し、そのアプリごとのテクニックやコツを全て指南して、モテ男(マッチングアプリマスター)への道標となる
マッチングアプリ完全攻略サービスです。
【備忘録】git pushでのerror “src refspec main does not match any”
rails学習中につき、よくやってしまうので備忘録として残しておきます。
私と同じような初学者の方の参考になれば幸いです。“`
% git push -u origin main
“`を実行したときにこのようなエラーが出たら
“`
error: src refspec main does not match any
error: failed to push some refs to ‘https://github.com/[githubアカウント名]/[githubリポジトリ名].git’
“`mainをmasterに変えて
“`
% git push -u origin master
“`を実行すればよい!
【Ruby on Rails】よくあるエラー集
# Routing Error
まずはrailsの中でroutingがどのような役割をもっているか理解する必要があります。
・[Routingとは](https://railsguides.jp/routing.html)
![S__29761599.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2165607/6dbee024-2cdc-4f25-5c83-6078c4cdee79.jpeg)
それではエラーについて解説します。
**Routing Error**
routes.rbで定義したルーティングに存在しないURLにアクセスされた場合に起きるエラーです。**原因**
routes.rbに記述されているものが間違っている。**解決策**
routes.rbに記載されているものが、コントローラー名とアクション名とマッチしているか確認する(スペルミスなどが考えられます)# Syntax Error
**SyntaxError**
コードの中にRubyの文法エラーがあるときに発生します。S
【Rails】コントローラーの処理を共通化したい
##環境
Ruby 3.0.2
Rails 6.1.4.1##共通化する前
UsersControllerとHomeControllerともに同じコードがあるので共通化したい。
“`posts_controller.rb
class PostsController < ApplicationController def index @post = current_user.post end end ``` ```home_controller.rb class HomeController < ApplicationController def index @post = current_user.post end end ``` ##共通化した後 共通化したいコードをconcerns下にメソッドとして定義する。 ```concerns/common_action.rb module CommonAction extend ActiveSupport::Concern def set_posts @posts = c
Sonic PiからLogic Proのソフトウェア音源を使う
# まえがき
こんにちは。最近Sonic Piを触り始めてライブコーディングを楽しんでいます。
Sonic Piはとても有能なソフトウェアですが、ひとつだけ不満な点があります。それは、synthの種類少なくない…!?という点です。というわけで、今回はその問題を解決するために、Logic Proの豊富なソフトウェア音源をSonic Piから呼び出してみようと思います。# 環境
OS: macOS Big Sur 11.4
Sonic Pi: v3.3.1
Logic Pro: 10.7.0# 方針
具体的な設定手順を説明する前に、ざっと方針を説明しようと思います。
まずはSonic Piの出力先として仮想MIDIデバイスを設定します。(ちなみにMIDI Outに対応していることを利用するとポケットミクを歌わせることもできるらしいです[^1])
次にLogic Pro側でMIDI入力のチャンネルを各トラックに割り当てます。
基本的には以上の2ステップです[^1]: [Sonic Piでポケット・ミクを演奏する](https://kuwamai.hatenablog.com/
CSV.parse で空のフィールドを必ず空文字に変換する
## バージョン情報
“`rb
RUBY_VERSION #=> “3.0.1”
CSV::VERSION #=> “3.1.9”
“`## 内容
CSV.parse で CSV 文字列をパースした場合、空のフィールドは場合によって nil を返したり空文字を返したりする。
“`rb
require ‘csv’CSV.parse(%(?,,?\n,”?”,””))
#=> [[“?”, nil, “?”], [nil, “?”, “”]]
“`空のフィールドを空文字に統一したい場合は `nil_value` オプションを使用するとよい。
“`rb
require ‘csv’CSV.parse(%(?,,?\n,”?”,””), nil_value: ”)
#=> [[“?”, “”, “?”], [“”, “?”, “”]]# もちろん nil_value オプションに空文字以外の値を指定することもできる。
CSV.parse(%(?,,?\n,”?”,””), nil_value: ‘?’)
#=> [[“?”, “?”, “?”], [“?”
ユーザー管理機能初期手順②!
#①.deviseのビュー作成!
前回の続きです!
deviseを使用してログイン機能を実装すると、自動的にログイン画面とサインアップ画面が生成されます!
deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますがビューファイルとしては生成されません!
これは、deviseのGem内に存在するビューファイルを読み込んでいるためです!
deviseのビューファイルに変更を加えるためには、deviseのコマンドを利用して、ビューファイルを生成する必要があります!
#②.rails g devise:viewsコマンド
deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです!
HTMLを修正できるため、カスタマイズ可能になります!
deviseのコマンドで、devise用のビューファイルを生成します!
下記がコマンドです!
“`php
ターミナル
% rails g devise:views
“`上記の作業でdevise用のビューファイルを生成することができました!
#③.ストロン
Railsチュートリアル2週目を終えて
#概要
Railsチュートリアル2週目を終えたので、感想を書こうと思います。##かかった期間
10/10 ~ 10/27 (24~26を除く、約2週間)
合計:約63時間1週目では約48時間かかったので、2週合計で110時間ほど費やしました。
##開発環境
1週目からクラウドIDEではなくローカル環境で開発に挑戦しました。– Macbook Pro(13-inch, M1, 2020)
– Mac OS Big Sur 11.6
– VSCode (Visual Studio Code – Insiders 1.62.0)
– Ruby 3.0.2p107
– Rails 6.1.4.1##1週目と2週目の間にやったこと
1週目を終えた時点で「Rubyのコードが読めない」「なにが書きたいのかわからない」と気づきました。恥ずかしながら。Rubyの基礎力がかなり不足していたのです…。Rubyの力を養うために、「たのしいRuby」で文法をメインに勉強しました。# 2週目で心がけたこと
1週目では上記の通りコードを読めないことに加え、**コードに対するコメント**を全然
【Ruby】case whenによる条件分岐
##環境
Ruby 3.0.2
Rails 6.1.4.1##case whenとは
thenは省略可
“`weather.rb
weather = 0
case weather
when 0 then
puts ‘晴れ’
when 1 then
puts ‘くもり’
when 2 then
puts ‘雨’
else
puts ‘雪’
end#=> 晴れ
“`putsを省略するとより可読性が上がり、コード量も減らせる
“`weather.rb
weather = 0
case weather
when 0 then ‘晴れ’
when 1 then ‘くもり’
when 2 then ‘雨’
else ‘雪’
end#=> 晴れ
“`case文をif文で書き直すとこんな感じ
“`===“`は、左辺が単独のStringやIntegerオブジェクトの場合“`==“`と同じ動作をする“`weather.rb
weather = 0
if weather === 0 then
puts ‘晴れ’
elsi
Rubyではシンボルと文字列ならシンボルの方が早い
## 概要
Rubyで、大量の文字列とシンボルを比較する際にはシンボルの方が早い。## シンボルの特徴
####Ruby内部で文字列でなく整数として扱われるので、早い。
比較検索の際に、有利なのでハッシュのキー、メソッドへの引数に使える。####イミュータブルなオブジェクトである。
破壊的変更を意図したくない場合に使える。## 計算
“`ruby
require ‘benchmark’Benchmark.bm 10 do |r|
fruits = [‘apple’,’orange’,’lemon’]
r.report ‘string’ do
target = ‘orange’
fruits.each {|fruit| fruit == target}
endr.report ‘symbol’ do
target = :orange
fruits.each {|fruit| fruit == target}
end
end
“`##結果
“`linux
user
VS Code で自動的に RuboCop を実行する (rbenv, asdf 対応)
# はじめに
この記事の通りに設定すると、VS Code 上で Ruby ファイルを保存した際に、自動的に RuboCop が実行され、以下のようにエディタ上にリアルタイムで結果が反映されるようになる。![](https://raw.githubusercontent.com/noraworld/developers-blog-media-ja/master/vscode-rubocop/Screen%20Shot%202021-10-26%20at%2018.50.17.png)
RuboCop のルールに従っていない箇所に波線が表示され、そこにマウスオーバーすると具体的な警告内容が表示される。
## 便利な点
* `git commit` するたびにいちいち `bundle exec rubocop` を実行する必要がない
* リアルタイムで修正していけるので、あとから RuboCop の警告修正のためだけの時間を取られることが少なくなる
* `.rubocop.yml` の内容が反映される
* プロジェクトごとにルールが異なる場合にも
【Ruby on Rails】簡単なAPI作ってみた
##はじめに
どうも、27歳未経験からエンジニア転職を目指しているもきおです。現役エンジニアに入社してから初期段階でどう言ったことをするのかを聞いたら「まずはAPI開発をやったよ」と言われ、APIってどうやって作るの?と思うと同時に作ってみたい!思いました。
今回は簡単なAPIをRailsで作成したのでここに記載したいと思います。
##そもそもAPIとは?
APIに関しては以下記事で概要を掴みました。
[WebAPIについての説明](https://qiita.com/busyoumono99/items/9b5ffd35dd521bafce47)本当にざっくりしたイメージだとWEBアプリのViewがないバージョンみたいだなーと感じました。もちろんViewがあるのもありますし、本当にざっくりとしたイメージなのですが。
あとはリクエストに対して返却値を返すという点では関数とかのイメージにも近いかもしれません。##作成物概要
今回はカテゴリーとアイデアという二つのテーブルを用意しアソシエーションはカテゴリ:アイデア=1:多の関係で作成しております。リクエストに対する一覧
CRUD処理 Ruby on Rails(データベース編集方法)
データベースにおけるデータの編集や削除の方法まとめ
***
railsのデータベースについて学んでいる時にCRUD処理について学びましたが、なかなか理解ができずまとめてみました。
※本記事では、ageとnameが保存してあるUsersテーブル上で,データの作成、編集方法を記しました。
***
・Create処理(データの追加)“`terminal:
$ User.create(name:”A”,age:100)
“`・Read処理(データを読み込み)
“`terminal:
$ User.all #Usersテーブルのすべてのデータを参照
$ User.find(3) #id名からの読み込み
$ User.find_by(name:”C”) #古いものから1つ
$ User.where(age:12) #複数の検索
“`
・Update処理“`terminal:
$ user = User.find(1) #id(1)のデータをuserに代入
$ user.age = 22 #ageを22に変更
$ User.save #保存
“`
・D
`Bio::GenBank` なオブジェクトをファイルに書き出す
# `Bio::GenBank` なオブジェクトをファイルに書き出す
`bioruby` で起動したシェルでは、 [`getent` したデータを `savefile` することができる。](http://bioruby.org/doc/Tutorial.rd.ja.html)
`biopython` だと `SeqIO.write()` で書き出すことができる。
しかし、 `bioruby` ではなく Ruby のプログラム内で `Bio::NCBI::REST::Efetch` で取得し、パースして `Bio::GenBank` になったオブジェクトをファイルに書き出したかったので調べた結果を記録する。
## できた方法
`Bio::DB` に実装されている `tags()` と `get()` を使う。
“`ruby
obj = … # Bio::GenBank のオブジェクトが入っているFile.open(“sample.gbk”, “w”) do |f|
obj.tags.each do |tag|
f.puts obj.get(tag)
ユーザー管理機能初期手順①!
#①.ログイン機能の実装!
ユーザー関連の機能はGemを使用します!
まず、ログイン機能を実装するために、deviseというGemを使用します!
・devise
ユーザー管理機能を簡単に実装するためのGemです!
実際に運用されている多くのRailsアプリケーションサービスで使用されています!
Gemfileを編集します!
追記する場所は、Gemfileの最後の行です!
“`php
Gemfile
# 中略
gem ‘devise’
“`次にコマンドを実行してGemをインストールします!
“`php
ターミナル
# Gemをインストール
% bundle install
“`次にローカルサーバーを再起動します!
Gemをインストールした後はrails sをcontrol + Cで一度停止し、サーバーを再起動する必要があります!
これは、インストールしたGemの反映するタイミングが、サーバー起動時だからです!
“`php
ターミナル
# Gemをインストール後
% rails s
“`次のステップへ行きます!
#②.deviseの設定ファ
[Rails]初心者でほぼぶっつけ本番で映画レビューサイトを作ってみた件
#前置き
もう3年近く前の話で、すごい今更で記憶もちょっと曖昧ですけど、記録としてまとめてみようと思いました(笑)
就活と学校の進級制作展兼コンテストのために作ったものなので、結構力を入れましたかなり昔に一度だけRuby on Railsを触ったことがあるが、その時はまだjava初心者レベルでhtml/cssやhttpやデータベースなどの知識も一切なかったので、全く理解できず諦めました。
今回は学校の授業でhtml/cssを習って、http関連知識やSQL構文などを少し触ったおかけで、[**チュートリアル**](https://railstutorial.jp/chapters/beginning?version=5.0)を読みながら書いてましたが、思ったより早いペースで順調に進めることができました。完全に自分の作品なので、試してみたいことをとりあえず一通り詰め込んでみましたw
#画面
###URL
https://moasis.herokuapp.com/
(パソコン画面のために作ったので、スマホ画面のレイアウトは超軽く調整しただけ)
管理者アカウント:julia@exa
Rails secret_key_baseをherokuの本番環境で適用する
本番環境でRails.application.secrets.secret_key_baseが原因で本番環境でjwtを使うことができなかったのでメモを残します。
### エラーの原因調査
エラーのログ““
heroku logs -tail
““““
2021-10-25T12:59:16.093104+00:00 heroku[router]: at=info method=OPTIONS path=”/v1/accounts” host=api-slack-react-ruby.herokuapp.com request_id=b010205a-d1b1-4436-aa04-ad84e944e2ea fwd=”153.246.218.124″ dyno=web.1 connect=0ms service=1ms status=200 bytes=287 protocol=https
2021-10-25T12:59:16.273962+00:00 heroku[router]: at=info method=GET path=”/v1/accounts” h