- 0.0.1. Rubyではシンボルと文字列ならシンボルの方が早い
- 0.0.2. VS Code で自動的に RuboCop を実行する (rbenv, asdf 対応)
- 0.0.3. 【Ruby on Rails】簡単なAPI作ってみた
- 0.0.4. CRUD処理 Ruby on Rails(データベース編集方法)
- 0.0.5. データベースにおけるデータの編集や削除の方法まとめ
- 0.0.6. `Bio::GenBank` なオブジェクトをファイルに書き出す
- 0.0.7. ユーザー管理機能初期手順①!
- 0.0.8. [Rails]初心者でほぼぶっつけ本番で映画レビューサイトを作ってみた件
- 0.0.9. Rails secret_key_baseをherokuの本番環境で適用する
- 0.0.10. Railsの環境構築やデプロイを学ぶ上で役に立った記事
- 0.0.11. Railsアプリの雛形作成!
- 0.0.12. Ruby gemのコードを読んでみよう。(初期設定編)
- 0.0.13. Rubyのヒアドキュメント (行指向文字列リテラル)について
- 0.0.14. 【Ruby】present?はblank?の真逆のメソッド
- 0.0.15. incompatible library version – msgpack.bundle (LoadError) 解決法
- 0.0.16. Rails はじめました [1. 環境構築]
- 0.0.17. 【Ruby on Rails】初学者専用 デバッグ練習
- 0.0.18. Railsテスト(RSpec)記事12選
- 0.0.19. Rubyの書き方 ハイパー基礎その1
- 1. 1:「puts」を知ろう!
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
Railsの環境構築やデプロイを学ぶ上で役に立った記事
普段はインフラ寄りの仕事をしているエンジニアですが、Railsの環境構築やデプロイについてキャッチアップする機会があり、色々学ぶうちにブックマークが溜まってきました。
同様の内容を学習中の方の参考になればと思い、Qiita記事化します。
## 環境構築関連
### Docker
– [Rails 6.1のDocker開発環境構築をEvil Martians流にやってみた(更新)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_03_25/83450)
– [クジラに乗ったRuby: Evil Martians流Docker+Ruby/Rails開発環境構築(翻訳)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_04_20/79035)
– [Nginx+Rails6.0+MySQL8.0+Adminer:docker-c
Railsアプリの雛形作成!
#①.railsコマンド
Webアプリケーションを作成するために、これからターミナルに様々なコマンドを打っていくことになります!
Railsに関する動作を行うには、ターミナルにてrailsコマンドを使用します!
Railsに関する命令は、すべてrailsというコマンドから始まります!
rails コマンド名とすることで、さまざまな動作を実行できます!
下記は例となります!
“`php
# railsに続けて、コマンドを記述する
% rails コマンド名
“`新しいアプリケーションを作成するには、ターミナルでrails newというコマンドを実行します!
#②.rails newコマンド
Railsで新規アプリケーションを作成する際に使用します!
このコマンドを実行することで、Railsアプリケーションの雛形が作成されます!
コマンドを実行する際には作成したいアプリケーション名を最後につけてrails new アプリケーション名とコマンドを実行します!
下記は新規Railsアプリケーションの作成の例です!
“`php
# Railsアプリケーションを作
Ruby gemのコードを読んでみよう。(初期設定編)
##概要
ruby gemのコードの中身をデバッグしながら読む方法についてまとめます。
本記事では、binding.pryを埋め込んで任意の場所をデバッグできるところまでの設定部分をまとめます。settingslogicというGemが、ソースの中身も短くリーディング初心者にとっても優しそうだったのでサンプルとして選択しました。
### 環境
mac 11.2.3
ruby 2.7.2
bundler 2.1.4### 手順
#### 1.リーディング用のディレクトリを作成します。
“`ruby
mkdir gemcode_reading
“`### 2.ディレクトリ直下で、bundle initして、Gemfileを作成する。
“`ruby
bundle init# gemcode_reading
# – Gemfile
“`3.デバッグ用のGemであるpryと、コードリーディングを行いたいGem(今回はsettingslogic)をGemfileに追加。
“`ruby
# frozen_string_literal: truesourc
Rubyのヒアドキュメント (行指向文字列リテラル)について
### 概要
Rubyのヒアドキュメント(行指向文字列リテラル)について簡潔に要点をまとめます。
複数行に渡る長い文字列をスッキリ書けます。## 識別子の種類
### <<識別子 ```ruby word = <
【Ruby】present?はblank?の真逆のメソッド
##present?
“`!blank?“` を実行するメソッド
“`nil“`, “`””“`, “`” ““`(半角スペースのみ), “`[]“`(空の配列), “`{}“`(空のハッシュ) のときにfalseを返す##blank?
“`nil?“` + “`empty?“` のようなメソッド
“`nil“`, “`false“`, “`””“`, “`” ““`(半角スペースのみ), “`[]“`(空の配列), “`{}“`(空のハッシュ) のときにtrueを返す##参考
https://railsdoc.com/page/empty
https://qiita.com/go_d_eye_0505/items/541110cb9821734b0623
incompatible library version – msgpack.bundle (LoadError) 解決法
# はじめに
“`
require’: incompatible library version – /Users/[name]/rails/rails-tutorial/sample_app/vendor/bundle/ruby/3.0.0/gems/msgpack-1.4.2/lib/msgpack/msgpack.bundle (LoadError)
“`
railsチュートリアルをローカル環境で進めているときにこのエラーに出くわしました。
static-pagesコントローラを生成してから何故かrailsコマンドが使えなくなり、身動きが取れなくなりました。
私の環境にピッタリの記事が中々見つからなかったので書くことにしました。# 筆者の環境
Macbook Air(M1, 2020)
macOS Big Aur バージョン11.4`ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]`
`Rails 6.1.4.1`
`Bundler version 2.2.29`# 解決策
ru
Rails はじめました [1. 環境構築]
# 要件
– ruby 2.7.4
– Rails 6.1.4
– redis latest
– PostgreSQL 12.2
– nginx 1.20# 開発環境
– macOS Big Sur
– VSCode
– Docker Desktop## VSCode プラグイン
– [Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)
– [Rails](https://marketplace.visualstudio.com/items?itemName=bung87.rails)
– [Ruby on Rails](https://marketplace.visualstudio.com/items?itemName=hridoy.rails-snippets)
– [Rails DB Schema](https://marketplace.visualstudio.com/items?itemName=aki77.rails-db-schema)# Docker 環境
–
【Ruby on Rails】初学者専用 デバッグ練習
Ruby on Railsの勉強を始めて3か月ほどがたちました。
自分でアプリケーションをつくっていくなかでたくさんエラーに悩まされました。そのため、railsを始める人に知ってほしいエラー処理を作りました。
是非使ってみてください!!コードはこちら↓
https://github.com/koya1616/debug1.gitそれでは手順を説明していきます。
# リポジトリをクローンしてみよう
クローンについての記事はこちらもみるといいかもしれないです!
・[Git clone から pushまで](https://qiita.com/H-Toshi/items/df55d5024d9c0e2cfe22)それではクローンしていきましょう
“`:terminal
$ git clone https://github.com/koya1616/debug1.git$ cd debug1
“`
簡単ですね。# dockerをつかってみよう
dockerは環境構築に使います。ぜひ使ってみてください。
・[dockerの使い方などなど](https://qiit
Railsテスト(RSpec)記事12選
#RSpecとは?
RspecとはRuby用のテストフレームワークです。RSpec は Gem パッケージとして提供されていますのですぐに導入できます。#記事
RSpecについて書かれている記事たちです。参照しやすいように一箇所にまとめました。https://qiita.com/tatsurou313/items/c923338d2e3c07dfd9ee
https://qiita.com/jnchito/items/42193d066bd61c740612
https://zenn.dev/fjsh/articles/b300fd2f8eec77
https://qiita.com/kskinaba/items/38b143e79bdfd44cc42a
https://qian-dao-zhen-yi.gitbook.io/rspec-style-guide/
https://qiita.com/yamaday0u/items/c3bf6036e11298771a99
https://zenn.dev/yukihaga/articles/816758ff6f0bd
Rubyの書き方 ハイパー基礎その1
今日はRubyに全く触れていない人に対して教えるつもりで書きます。
VScode的なものであったり、
ターミナルであったり、
ファイルの作成などについては、省略します。
プログラミングで何か入力すると、こういう返事がきて、こういう動きをしますよっていう、仕組みの触りの部分です。もし、万が一、Qiitaを見てるけど、見てるだけでRubyとかプログラミングとか全く知らないぜ!ってドヤ顔で言ってる人がいたら、遠慮なく質問してください。
初心者ですが、ここらへんならまだドヤ顔返しできます。顔だけは。。。1:「puts」を知ろう!
これを知らないと何も始まらないぜという「puts」。
「puts」は、
「puts」の後に書いた文字や計算の答えを出してやるぜ!
という意味です。定番のあれを書きますか。“`ruby
puts “Hello World”
“`
はい、出ました!
これは、経験者なら初心者でも誰でも見ると言われている「例」です。
少しはヒネって変えてもいいと思ったけど、自分はこれ好きです笑これをターミナルで入力して返ってくる返事が、
“`rub
サービス設計について③!
#①.結論!
Ruby on Railsでは、DB設計が済んでしまえばマイグレーションファイルなどに記述をするだけでDBが利用可能になるので、より開発に近い設計だと言えます!
したがって、DB設計は詳細設計に分類されることがほとんどです!
DB設計について説明したいと思います!
#②.DB設計
DB設計とは、開発で使用するDB(データベース)の表を設計することです!
具体的に考える項目としては、「テーブル」や「カラム」、「関連付け(アソシエーション)」などです!
設計手順としては、まず保存する項目を洗い出します!
そして、どのようなテーブルがあれば管理しやすいかを考慮しつつ、その中でテーブル同士の関連付けを考えていきます!
#③.エンティティ
サービスで扱われる情報を整理します!
サービスで扱われる情報のことを、「エンティティ」と呼びます!
サービスで扱われるデータ自体のことですね!
例を出すと、以下のような物です!
・ユーザー管理に関する情報
・投稿へのコメントに関する情報
このような物になります!
次に、抽出したエンティティを関連性も含め具体化し
幹事をランダムに設定する
#前回投稿した記事の応用編
https://qiita.com/tkht2401/items/63406354e17566e3ae11
sampleメソッドを使って、より応用したBooleanの「true, false」を切り替えたいと思います。
**この記事が少しでも良かったと思ったらLGTMを押していただけたら嬉しいです!!**
##前提条件
group:memberrをたくさん持つ
member :たくさんのgroupに所属する
group_member : 中間テーブル**グループとメンバーは多対多の関係です!**
そして、グループに加入したメンバーの中からランダムに幹事を設定できること。流れとしては、
自動設定するを押すとグループに参加のメンバーの中から、
Role(役割)が、organizer(幹事)かregularにランダムに変わります。今回はsampleメソッドを使うので、少し制限もつけます。
①幹事は一グループにつき一人まで
②メンバーは二回連続で幹事にならない#イメージ図
![qiita_boolean.png](https://qii