- 1. LinuxにHomebrew,rbenv,ruby-buildを入れて任意のバージョンのrubyをインストール
- 2. レスポンシブ対応で役立つ実装の仕方
- 3. Ruby 練習問題1 ~ハッシュの基礎~
- 4. プログラミング初学者がプログラミング言語と周辺知識の概要を知るための記事
- 5. Rails Ruby scssをページごとに実装したい時
- 6. Bundlerとは
- 7. 【Rails】formからハッシュの配列をパラメータとして送信する
- 8. Socery でundefined method ‘after_save’ for {:if=>…}のerrorが出てきた時の対処法
- 9. Ruby % 使う方
- 10. Rails validates
- 11. Rspec request-specからOpenAPI 仕様ドキュメント自動生成(rspec-openapi)
- 12. わかりやすいプログラミング入門書だけで学ぶことの弊害
- 13. 【Rails】gemアップデート時の依存関係の調べ方(Bundler attempted to update GEMNAME but its version stayed the same)
- 14. RailsでのDB接続エラー
- 15. 管理者ユーザー機能の実装[Ruby, Rails]
- 16. Rubyの実行
- 17. 未経験の新人でも1ヶ月で「使える」人材に育てる仮想プロジェクト型研修(後編)
- 18. rails + postgresql + dockerでのコンテナ作成
- 19. 【Ruby】Minitestでスタブを使う(stub/stub_any_instance)
- 20. 【Ruby】文字列を部分的に抽出・削除するメソッドまとめ
LinuxにHomebrew,rbenv,ruby-buildを入れて任意のバージョンのrubyをインストール
# はじめに
Linux環境にrubyをインストールする場合、手っ取り早いのはディストリビューションが提供しているリポジトリからrubyのパッケージを導入する方法です。ですが、リポジトリに入っているrubyのバージョンは必ずしも最新レベルのものとは限らないですし、より古いレベルのものを入手したい場合もあります。そんな時には複数のrubyのバージョンを管理できる[rbenv](https://github.com/rbenv/rbenv)というサードパーティーツールと、rubyのインストールをサポートする[ruby-build](https://github.com/rbenv/ruby-build)というプラグインを使用すれば、任意のバージョンのrubyをLinux環境に導入して使用することが可能です。そこで、今回はRed Hat Enterprise Linux 8.6にrbenv、ruby-buildを入れて、ディストリビューションのリポジトリが提供しているrubyよりも上位レベルのrubyをインストールしてみました。# Homebrew、rbenv、ruby-buildをイン
レスポンシブ対応で役立つ実装の仕方
レスポンシブ対応しようと思っていたけど、いざ実装しようと思ってたら何をすれば良いのか分からない人向けの記事となります。
いくつか追加で載せていきますが、とりあえず絶対に知っておいた方がよさそうなことを3選まとめておきます。1、まずはなんと言っても開発者ツールで携帯の表示を確認すること。
ショートカットキーでoption + command + Iを打つと開発者ツールが開く。
![94155508-951D-4ADC-BD47-18BB2EA18CAA.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358181/fe891a5a-2a49-73e3-162e-f449bda55678.jpeg)ここの赤いところを押すと携帯での表示画面に切り替わる。
2、viewportの設定
とhtmlファイルのheadの中に記述しておく。
そうすることでパソコン上では小
Ruby 練習問題1 ~ハッシュの基礎~
こんばんは、プログラミング初学者”fujitacoma”です!
今回からシリーズとして、Rubyの練習問題を解いていきたいと思います。
徐々に難易度を上げていく予定ですので、お付き合い頂けますと幸いです!それでは早速始めます!
# 問題
“`
puts hash.keys
puts hash.values
“`
上記のメソッドを実行した時に
“`
one
two
three
1
2
3
“`
とターミナルに表示されるような変数hashを作成するためのコードをシンボルを使って記述してください。# 回答と解説
### 模範解答
“`
hash = { one: 1, two: 2, three: 3 }
“`
### 解説
シンボルを使ったキーの記述方法は、キーの後にコロン:をつけて定義します。
“`
hash = { キー: 値}
“`
ハッシュをシンボルで記述すると、コード上では文字列のように見えていますが、内部的には数値として処理されます。
数値として扱われるので、 __処理速度が速くなる__ ことと __文字列としての役割__ も果たします。
よって、ハ
プログラミング初学者がプログラミング言語と周辺知識の概要を知るための記事
# どのような人向けの記事か
私のような、【駆け出しエンジニアの方やプログラミングに関心のある方、初心者の方】向けにどんなプログラム言語があるのかをざっくりわかるようにゆる〜くまとめたものです。また、備忘録としても投稿しておこうと考えました!※当方も未経験エンジニアの立場で実務未経験であるため、間違いはあると思いますので適宜ご指摘いただければ幸いです。
# なぜ、この記事を記述するに至ったのか
理由としては、3点あります。
・自分自身が今後フルスタックエンジニアを目指しており、さまざまな言語や技術を習得したいと考えているから
・各言語の特徴を知ることで今後の開発等で最適な言語やライブラリ・コンポーネントへの理解が必須であると考えたから
・自分の武器を増やす上で特徴をまずはざっくり理解したいと考えたから# 本編
ここからが本番です!自分自身が記事等で学習したものをざっくばらんに言語化していきます。気になる言語があれば、ご自身でも深く調べてみることで、どんな言語なのか実感できるはずなので是非深掘りして見てくださいね!
### 【注意点】
・言語名の横に(マークアップ言語)と記載
Rails Ruby scssをページごとに実装したい時
ポートフォリオを実装していた際に、scssをtop header footerそれぞれに分けて、実装をしていきたいと思ったので、その実装方法を書かせて頂きます。
ネットで調べると色々な方法が書かれていて、どれで実装すれば良いのか、よく分からなかったため、今回僕なりの実装の方法でうまくいった方法を書かせて頂きます。手順は主に4つです。
1、まずはscssで実装したいviewファイルに以下を記述します。app/views/shared/_header.html.erb
“`
<%= stylesheet_link_tag 'header', :media => “all”%>
“`
※一番上に記述します。2、次にapp/assets/stylesheets/内にscssファイルを作成します。
今回は1で [[stylesheet_link_tag ‘header’]]としているので
header.scssを作成します。3、次にconfig/initializers/assets.rb内に読み込みたい、scssファイルを書きます。
“`
Rails.applic
Bundlerとは
Bundlerとは一体なんなのか?
ふと気になっていたので、色々と調べた結果を書かせて頂きます。結論を述べると
Bndlerとはそのプロジェクト内でのgemを一括で管理するものである。railsの開発現場では大量のgemを使うことになる。
その大量のgemのバージョンは同一バージョンのgemをインストールする必要がある。bundlerを使うと、一つのコマンドで大量のgemをどの環境でも同一のバージョンをインストールすることができる。
ということらしいです。今まで、適当にbundle installとかしちゃってたけど、こういう意味だったのかと、改めて勉強になりました。
参考記事 参考文献
プロを目指す人のためのRuby入門 改訂2版 著書 伊藤 淳一
【Rails】formからハッシュの配列をパラメータとして送信する
### 最終的にcontrollerで受け取りたいparamsのイメージ
Railsのcontrollerで以下のような形式で同じname属性で固められた多次元配列をparamsとして受け取りたい“`ruby
users: [
{
id: 10, name: “山田太郎”, email: “test@email.com”, phone_number: ‘024-111-11’, memo: “役職:工場長”,
action_histoires: [
{id: 10, action_datetime: “2022-05-13T00:00:00”, description: “外出”},
{id: 20, action_datetime: “2022-05-13T00:00:00”, description: “直帰”},
{id: nil, action_datetime: “2022-05-13T00:00:00”, description: “時間休 13:00 – 15:00”},
],
},
{
id: 20, name: “山田太郎
Socery でundefined method ‘after_save’ for {:if=>…}のerrorが出てきた時の対処法
sorceryでログイン機能実装時にタイトルのような、undefined method ‘after_save’ for {:if=>…}のエラーが出てはまってしまったため、その解決策を書かせて頂きます。
![D8A42207-B968-430B-AE82-814F5B8D48FA.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358181/72eb0aeb-5da4-adfc-2546-2172d2386a47.jpeg)結論を言うと、sorceryのversionを最新にすることで解決しました。
私の環境はと言うと
ruby 3.1.2
rails 6.1.5
で実装をしていました。いつも通りrails newしてログイン機能をsorceryで実装しようとしたら、上の写真のようなエラーが出てきました。
色々な記事を見てきて、そのうちの解決策の一つに、rubyのversionを2系に落とすと良いという記事がありました。
rubyのversionを2系に落として実装したところ写真のよ
Ruby % 使う方
# Ruby % 使う方
### %q
> シングルクオートで囲う場合と同等(どうとう)、シングルクオートなので、変数や定数の展開はされない
“`ruby
language = “ruby”
str = %q(Programming language is “#{language}”)
puts str
# => Programming language “#{ruby}”
“`### %Q
> ダブルクオートで囲う場合と同等(どうとう) 変数や定数の展開はできます
“`ruby
language = “ruby”
str = %Q(Programming language is “#{language}”)
puts str# => Programming language is ruby
“`### %w
> 配列を作る 、式の展開はされない
“`ruby
arr = %w(apple orange banana)
puts arr
# => [“apple”,”orange”,”banana”]
“`### %W
“`ruby
PYTHON =
Rails validates
## バリデーション
Railsではvalid?メソッドを実行するとバリデーションが実行されます!
バリデーションが通ればtrueを返し、引っかかればfalseを返します。
invalid?メソッドは逆の振る舞いをします。### 空でないこと
“`ruby
validates :title , persence: true
“`
### booleanの場合
“`ruby
validates :island, inclusion: { in: [true , false ] }
“`
### unique
“`ruby
validates :user_name , uniqueness: true
“`### 含むかどうかを検証する場合
“`ruby
validates :fruit, inclusion : {in: %w(banana apple orange)}
“`
### 含まないことを検証する場合
“`ruby
validates :country, exclusion: {in: %w(china japan)}
“`### 長さ
“
Rspec request-specからOpenAPI 仕様ドキュメント自動生成(rspec-openapi)
# はじめに
案件で実装したAPIの仕様書が急遽必要になり、rspec-openapiというrailsのrequestテストからOpenAPI 仕様のドキュメントを出力することができるGemがありました。
便利だと思ったので、使用方法をまとめておこうと思いました。# 開発環境
ruby ‘3.0.0’
Rails 6.0.3.4# 前提
– rspecでテストを実施している
– requestのテストを書いている# 使用方法
1. Gem(‘rspec-openapi’)のインストール
“`ruby:request.rb
group :test do
gem “rspec-rails”
gem “rspec-openapi” # 今回追加
end
“`bundle install 実行
2. OPENAPI=1 rspec を実行
環境変数等を設定する必要はなく、以下コマンドを実行
“`erb:ターミナル
OPENAPI=1 rspec
OPENAPI=1 rspec ファイルパス # 指定したファイルのみ実行
“`※docker
わかりやすいプログラミング入門書だけで学ぶことの弊害
# わかりやすいプログラミング入門書だけで学ぶことの弊害
わかりやすい入門書はすばらしい。私もそういう本を手にとって、プログラミング言語の全体像を大づかみにとらえる。こうした入門書だけでも、ある程度のものが作れるようになるくらい最近は良い本が多い。しかしここであえてこう言いたい。それらの入門書には共通した欠点がある。
経験を積んでも、あるときエンジニアは壁にぶつかる。その壁を越えられるか越えられないかの差を生むのは、入門書が与えてくれた方便的説明のわかりやすさが覆い隠している、むき出しのプログラミング言語仕様の奥深さ、コンピュータの動作原理だ。いや、無論そのようなものを意識しなくてもある程度のシステムを不自由なく作っていく事はできる。しかし、それだけではエンジニアとしての成長はいつまでもそこで止まったままだ。# わかりやすいプログラミング入門書のわかりやすい説明とは
しかし、上の説明は抽象的すぎて具体的には何を言っているのか伝わらなかっただろう。大丈夫、今から具体例を挙げて説明を掘り下げていく。プログラミング入門書の方便的な説明とは、たとえばこういうことだ。
![変数a.
【Rails】gemアップデート時の依存関係の調べ方(Bundler attempted to update GEMNAME but its version stayed the same)
## はじめに
未経験からエンジニアに転職して、3ヶ月ほど経つエンジニアです。今回は業務でgemをアップデートするときに詰まった
**gemアップデート時の依存関係の調べ**をテーマに書きます。
↓の警告がでて、gemをアップデートできない場合のアプローチについてです。
~~~
Bundler attempted to update GEMNAME but its version stayed the same
~~~## 結論
https://rubygems.org/– ↑で該当のgemを探す
– 依存関係を調べる## 依存関係の例
例として、faradayというgemの依存関係を見ていきます。
https://github.com/lostisland/faraday
~~~Gemfile.lock
faraday (1.10.0) # 最新の2.3.0にしたい
~~~~~~
$ bundle update faraday
~~~上記コマンドでgemをアップデートしようとするも、警告が出てアップデートできません。
~~~
Bundler atte
RailsでのDB接続エラー
# エラー
AWS CodeBuild上でAurora(MySQL)に接続してrails db:migrateしようとすると、Access Denied。
この問題を解決するのにかなりの時間を費やしたので、メモ + 共有。# 検証 + 解決方法
– そもそもDBは起動しているか。
– ネットワークとして、互いに接続できる状態か。(セキュリティグループ設定が正しいか)
– MySQLクライアントでDBに接続できるか。
“`bash
mysql -h <ホスト> -u–password=
“`
– DBホストを名前解決できているか。
“`bash
nsloolup <ホスト>
“`
– DBから応答はあるか。(CodeBuildで実行)
“`bash
mysqladmin ping -h <ホスト> -u–password=
“`私の場合、以上に関しては問題が無かった。
そのため、Railsの設定のどこかが間違っているのだろうと当たりをつけることができた。– Ra
管理者ユーザー機能の実装[Ruby, Rails]
初めまして、プログラミング初学者”fujitacoma”です!
4月からプログラミングスクールで学習を始めておりましたが、
遅ればせながらのQiita初投稿です。今回は、現在開発中のオリジナルアプリにて簡単な管理者機能を実装しましたので、
その流れを説明していきたいと思います!# はじめに
今回使用するGemはdeviseのみです。
deviseのインストール及び、usersテーブル作成後から説明したいと思います。# 管理者(admin)を追加する
まずはじめに、作成したusersテーブルに管理者(admin)を追加します。
“`
#ターミナル
rails g migration AddAdminToUsers“`
この記述の命名規則は、キャメルケース、、でしたかね。
大文字と小文字ががラクダのコブのように続く=キャメルケース
って感じで覚えた気がします。続いて、作成されたマイグレーションファイルにカラムの情報を追加していきます。
このとき、カラムの型はboolean型、デフォルトは0とします。“`ruby
#migrationファイル
cl
Rubyの実行
progateなどで書き方はわかったけど、実際どうやって実行するのか知らなかったので
## 1. Rubyのインストール
## 2. gemのインストール
## 3. .rbファイルの作成
## 4. 使用するgemを記述
“`
require ‘gem名’
“`
## 5. プログラムを記述
## 6. ターミナルから実行
“`
$ ruby ファイル名.rb
“`
Railsを使うまでもない簡単なプログラムはこれでおk
未経験の新人でも1ヶ月で「使える」人材に育てる仮想プロジェクト型研修(後編)
## これまでのあらすじ
当社では開発未経験の新人さんが入ってくると、
研修の一環として仮想の開発プロジェクトを立ち上げて、
仕様決めからリリースまでの一連の開発作業を体験してもらっています。計画する、コードを書く、ツールを使う、わからない事を調べる、周りに聞く、トラブルシューティングする、
といった開発における一連の流れを経験してもらいます。ただ単に知識として理解するというよりも、
経験することでより深く理解してもらえると考えています。前編では、仮想プロジェクトの入る前の準備や、プロジェクト始動時に、
新人達・先輩達がそれぞれどういったことを行うかを説明しました。[前編はこちら](https://qiita.com/tatsumi_t2/items/7c5ceca6f354ba21c2eb)
## 後編では
仮想プロジェクトを日々どんな風に進めるのか、リリースまでの話しをしたいと思います。
# 日々の開発作業
## コーディング
新人さんたちの思うように自由に書いてもらいます。
質問されたり、コードを見せてもらった時に、良い書き方を教えることはありますが
rails + postgresql + dockerでのコンテナ作成
初投稿のため、問題点、改善点などありましたら
是非ご連絡いただけると幸いです!# 各ファイルコード
“`Dockerfile:Dockerfile
FROM ruby:3.0.1# yarnパッケージ管理ツールをインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo “deb https://dl.yarnpkg.com/debian/ stable main” | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y yarnRUN apt-get install -y nodejs npm && npm install n -g && n 14.19.1
RUN mkdir /app_name
WORKDI
【Ruby】Minitestでスタブを使う(stub/stub_any_instance)
# はじめに
スタブ(stub)とは、テスト中で呼ばれるメソッド処理の代用品のようなものです。
テストで呼ばれるメソッドの処理を指定した処理で置き換えることができます。
「外部サービスの呼び出し処理などを置き換えることによって仮状態で動かして、本当にテストしたい部分へ簡易的に辿りつきたい」といったときによくスタブを使います。以下では例として次のような`SampleService`のテストを作成することを考えます。
“`ruby
class SampleService
def initialize; enddef call
is_error1 = call_api1
is_error2 = CallApi2Service.new.call
return ‘error!’ if is_error1 || is_error2‘success!’
endprivate
def call_api1
# 外部API1の呼び出し処理
end
end
“`
“`ruby
class CallApi2Servic
【Ruby】文字列を部分的に抽出・削除するメソッドまとめ
# String#[]
文字列の範囲を指定して部分文字列を取り出す。
“`ruby
str = ‘sample_string’
str[0] #=> “s”
str[1, 3] #=> “amp”
str[2..5] #=> “mple”
“`**String#slice**も同様。
“`ruby
str = ‘sample_string’
str.slice(0) #=> “s”
str.slice(1, 3) #=> “amp”
str.slice(2..5) #=> “mple”
“`正規表現による指定もできる。
“`ruby
str = ‘sample_string’
str[/a.+l/] #=> “ampl”
str.slice(/a.+l/) #=> “ampl”
“`# String#match
指定した正規表現にマッチした部分を取得する。
**正規表現マッチを扱うクラス(MatchData)のインスタンスが返却される。**
第二引数によりマッチの開始位置を制御できる。“`ruby
str = ‘sample_string’
st