- 1. credentials.yml.encをRubyMineで編集する
- 2. 【Ruby】インスタンスの生成
- 3. MVCモデルについて
- 4. 【RuboCop】特定の「ディレクトリ」をチェック対象外とする
- 5. 【備忘録】rbenvの導入(anyenv経由)
- 6. プログラミング言語を簡単にまとめる
- 7. RailsでMissing helper file helpers/〜〜というエラーが出た時の解決策
- 8. Rubyで解く射撃王
- 9. 【RSpec】変数名を付けながら大量のデータ作成したとき
- 10. railsの環境構築
- 11. [py2rb] 辞書の値が関数
- 12. [py2rb] lambda
- 13. 音声ファイルを保存、再生、ダウンロード機能を実装。【Ruby】
- 14. RubyにEnumerator#rest みたいなのが欲しい
- 15. paiza POH silver_bullet #SILVERBULLET #銀の弾丸 #戦場のエンジニア
- 16. 【RSpec】ActiveRecordを継承しないクラスでFactoryBotを作成したい
- 17. 【Ruby】if,else 真偽値による条件を組み合わせて処理
- 18. [Rails7] 後からBootstrap5を導入する
- 19. [Ruby] Integerクラスのabsメソッド
- 20. rails s が上手くいかない。rails newが作成できない時。
credentials.yml.encをRubyMineで編集する
# 前提環境
“`
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
$ rails -v
Rails 7.0.1
“`
OSはWindows10 64bitです。# RubyMineの実行ファイルパスを取得する
スタートメニューなどからRubyMineのアイコンを探して、[ 右クリック->(その他)->ファイルの場所を開く ]を`rubymine64.exe`ファイルが出てくるまで行います。
そうしたら、ファイルをコピーしてエクスプローラーのアドレス欄に張り付けて、その文字列をコピーしてください。
# 環境変数を設定する
値の例: `”C:\…\rubymine64.exe –wait”`
– 一時的
“`
set EDITOR=先ほど取ってきたパス –wait
“`– 恒久的
“`
setx EDITOR 先ほど取ってきたパス –wait
“`# 編集
“`
rails credentials:edit
“`
【Ruby】インスタンスの生成
※初心者向け
※アウトプット練習の為開発環境
rails 6.0.4.4
ruby 2.6.5##問題
クラスFruitを以下の仕様で定義してください。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2451862/b3e5911a-abf2-f0db-a2f0-a706d4bd1b9a.png)
実行結果は以下のようになります。“`ruby
採れたて新鮮な果実です
リンゴは120円です
オレンジは200円です
イチゴは60円です
“`雛形
“`ruby
class Fruit
def クラスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
enddef initialize
# ここに処理を記入してください
enddef インスタンスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
end
end# 3つのインスタンスを生成してください
# クラスメソッドを呼び出し、
MVCモデルについて
###学習した理由
最近ポートフォリオを作成し終えた初学者になりますので、これを機にもう一度基本に戻り、プログラムの基礎を学ぶことを目的としてこの記事を作成しております。###MVCモデルとは
MVCモデルとは「モデル(Model)」「ビュー(View)」「コントローラ(Controller)」の三つに分類し、コードを分けて記述する方法になります。###「モデル(Model)」
「モデル(Model)」の役割は表示内容や入力に関係しない処理を担当する部分になります。
もっと詳しく説明すると、処理したデータをデータベースに反映することです。
担当する処理として、データの検索、データの検証、データの変換、データの紐付けなどになります。###「ビュー(View)」
「ビュー(View)」の役割は実際に目に見えるページを表示することになります。
「ビュー(View)」に関してはユーザー側の処理が多く、入力内容の取り込みや、リクエストをコントローラーに渡す役目も果たしています。###「コントローラ(Controller)」
「コントローラ(Controller)」の役割はView
【RuboCop】特定の「ディレクトリ」をチェック対象外とする
# 概要
bundle exec rubocopを実行した際、ルール違反のファイルを指摘してくれるが、
その中で**特定のディレクトリ**をルール適用対象外とする方法についてメモ。## 環境
ruby 3.0.2
rails 6.1.4
mysql 8.0.26
rubocop 1.23.0
rubocop-rails 2.12.4### ルール違反の検出
前提:多数のカラムを持つSampleモデルをrails generateで作成した直後とする。“`terminal:terminal
# チェックの実行
❯❯❯ bundle exec rubocop# ルール違反箇所の検出
sample-app/.rubocop.yml: Warning: no department given for MethodLength.
Inspecting 63 files
…………………………………………………….C.Offenses:
db/migrate/20220119115229_crea
【備忘録】rbenvの導入(anyenv経由)
“`
# rbenvのインストール
$ anyenv install rbenv# 初期化処理をzshrc記述
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.zshrc# インストールできるRubyの一覧表示
$ rbenv install -l# 3.1.0をインストール
$ rbenv install 3.1.0# ~/.rbenv/versions/*/bin/ 以下のファイルを ~/.rbenv/shims/ 以下にコピー
$ rbenv rehash# グローバル指定
$ rbenv global 3.1.0# バージョンの確認
$ ruby -v“`
参考記事:https://mogulla3.tech/articles/2020-12-29-01
プログラミング言語を簡単にまとめる
##Java
JavaとはC言語ベースに開発された汎用性の高いプログラミング言語。求人需要が多い
WEBサービスから業務システム、組み込み、など多岐に渡り開発現場で採用されている。
フレームワークはspring Framework##Ruby
Rubyとはオブジェクト指向のプログラミング言語。コードはシンプルに書きやすく読みやすい。
WEBサービスやWEBアプリケーションができる。
フレームワークのRuby on Rails。クックパッドや食べログに使用されている##PHP
PHPとは動的なWEBページを生成することができるサーバーサイドのスクリプト語。HTMLは静的WEBページ。
他のプログラミング言語と比べると文法が比較的容易なので取得しやすい。
フレームワークはLaravel## C#
マイクロソフト社が開発したオブジェクト指向のプログラミング言語。Javaと似ている。
GUIアプリケーション、WEBアプリケーション、ゲーム開発ができる
フレームワークはASP.NET
RailsでMissing helper file helpers/〜〜というエラーが出た時の解決策
# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。Railsチュートリアル6版の学習中、14章の「14.2.4[Follow]ボタン(基本編)」の
`$ rails generate controller Relationships`
を実行後に
>Missing helper file helpers/relationships_helper.rb (AbstractController::Helpers::MissingHelperError)というエラーが出て戸惑ったのですが、解決したため共有です。
# 結論
`$ spring stop`
コマンドで解決しました。## springとは
「開発効率を上げるためにバックグラウンドで動いてくれているやつ」らしいです!https://nyakanishi.work/lets-stop-spring-when-the-rails-command-does-not-work-properly/#toc1
## spring
Rubyで解く射撃王
[問題解決力を鍛える!アルゴリズムとデータ構造](https://www.amazon.co.jp/%E5%95%8F%E9%A1%8C%E8%A7%A3%E6%B1%BA%E5%8A%9B%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B%EF%BC%81%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-%EF%BC%AB%EF%BC%B3%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E5%A4%A7%E6%A7%BB%E5%85%BC%E8%B3%87-ebook/dp/B08PV83L3N/ref=sr_1_4?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=16M9DX8AQWUYQ&keywords=%E3%82%A2%E3%83%AB%E3%82%
【RSpec】変数名を付けながら大量のデータ作成したとき
##instance_variable_set
テストで変数名を付けながら大量のデータを作成したいときに便利。
“`ruby
(Date.new(2022, 1, 1)..Date.new(2022, 1, 31)).each_with_index do |date, i|
instance_variable_set(“@date#{i+1}”, date)
end@date1 #=> Sat, 01 Jan 2022
@date2 #=> Sun, 02 Jan 2022
@date3 #=> Mon, 03 Jan 2022
…
“`##参考
https://docs.ruby-lang.org/ja/latest/method/Object/i/instance_variable_set.html
https://qiita.com/yosaprog/items/c008c709e851c9e7c717
railsの環境構築
## はじめに
備忘録
PCはMac M1チップ
参考記事を読んでから実装するとわかりやすいと思います。## 参考にした記事
[【Ruby】Rubyのインストール手順と動作確認](https://info-wcn.com/ruby-install-mac/)
[Ruby on Rails の環境構築構築](https://info-wcn.com/ruby-on-rails-environment-mac/)[bundlerで非推奨になった –path –binstubs – Qiita](https://qiita.com/devzooiiooz/items/8babd82f780f01812f9d)
[bundle exec はもういやだ – Qiita](https://qiita.com/circled9/items/1a3c6c38ee40de4cf5e3)## 特質事項
非推奨の`–path vendor/bundle –binstubs=vendor/bin`を使わない方法で実装するrails 環境構築部の`bundle exec`を省略する設定
[py2rb] 辞書の値が関数
# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# 辞書の値が関数 (Python)
“`python
def a(k, v):
print(k, v)def b(k, v):
print(k, v)h = {‘func a’: a, ‘func b’: b}
h[‘func a’](‘A’, 1)
h[‘func b’](‘B’, 2)# A 1
# B 2
“`
辞書の値に関数を入れておいて、引数を渡します。
動的プログラミングですねえ。
# 失敗 (Ruby)
“`ruby
def a(k, v)
p [k, v]
endh = {‘func a’ => a}
main.rb:1:in `a’: wrong number of arguments (given 0, expected 2) (ArgumentError)
“`
ハッシュにメソッドを入れた時点でエラーになります。
# 成功 lambda (Ruby)
“`ruby
a = lambda { |k, v| p [k, v
[py2rb] lambda
# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# lambda (Python)
“`python
_identity = lambda x, **kw: x
“`
https://docs.python.org/ja/3.7/glossary.html#term-lambdaいわゆる無名関数ですね。
# lambda (Ruby)
“`ruby
_identity = ->(x, **kw) { x }
# or
_identity = lambda { |x, **kw| x }
“`
https://docs.ruby-lang.org/ja/latest/method/Kernel/m/lambda.html`lambda`と`Proc`の違いの一つに引数の数が違っている場合があげられますが、可変長引数を使用するとエラーにならない様です。
“`ruby
identity2 = ->(x, **kw) { x }
puts identity2.call(2)# 2
identity1
音声ファイルを保存、再生、ダウンロード機能を実装。【Ruby】
# 目的
音声ファイルをアップロードし保存ができ、再生やダウンロードができるように実装します。
以下の画像のようなオーディオプレーヤーが実装されるのがゴールです。
[![Image from Gyazo](https://i.gyazo.com/c7beca78223170f1134c6b610b1f7668.jpg)](https://gyazo.com/c7beca78223170f1134c6b610b1f7668)# 手順
### オーディオファイルを保存したいモデルにカラムを追加。“`ターミナル.
% rails generate migration AddFileToモデル名 file:string
“`
“`ターミナル.
% rails db:migrate
“`
### ストロングパラメータの修正“`songs_controller.rb
# 省略private
def song_params
params.require(:song).permit(:file, :title) # permit()の中に:fileを追
RubyにEnumerator#rest みたいなのが欲しい
Ruby の Enumerator で、列挙はひとつずつしかできない。まとめていくつか列挙できるメソッドが欲しい。
こんな感じ。
“`ruby:Ruby
class Enumerator
def rest(n=nil)
ary = []
case n
in nil
loop { ary << self.next } in Integer n.times { ary << self.next } end ary end end a = [*1..10].to_enum a.next #=>1
a.next #=>2
a.rest(4) #=>[3, 4, 5, 6]
a.next #=>7
a.rest #=>[8, 9, 10]
“`ダメですかねえ…。
paiza POH silver_bullet #SILVERBULLET #銀の弾丸 #戦場のエンジニア
## Dランク
### 燃える荒野戦(d1)
“`awk:d1.awk
#!/usr/bin/awk -f
$0=30*$1
“`### 砂漠の防御戦(d2)
awkの除算は小数になるので…
“`sh:d2.sh
#!/bin/bash
read n
echo $(( (n-32)*5/9 ))
“`### 秘密の地下道戦(d3)
“`rb:d3.rb
#!/usr/bin/ruby
p *gets.to_i+1…gets.to_i
“`### 失われた娯楽施設戦(d4)
“`sh:d4.sh
#!/bin/sh
tr -d ‘\n’
“`### 打ち捨てられた工場戦(d5)
入力の順番的にRubyよりもPythonが適していると思いまする
“`py:d5.py
#!/usr/bin/python
print(‘DANGER’ if input().strip() in input() else ‘OK’)
“`## Cランク
### 崩壊した市街地戦(c1)
なんか泥臭いなぁ
“`rb:c1.rb
#!/usr/b
【RSpec】ActiveRecordを継承しないクラスでFactoryBotを作成したい
##initialize_with
Rubyの任意のクラスでFactoryBotを作成したいときは“`initialize_with“`を使う。“`ruby
# user_info.rb
class UserInfo
attr_accessor :hogedef initialize(hoge)
@hoge = hoge
end
end# factories.rb
factory :user_info do
hoge { Fuga.new }initialize_with { new(hoge) }
endbuild(:user_info).hoge #Fugaクラスのインスタンスが返る
“`####注意
**create(:user_info)**すると下記のエラーが出る。“`
NoMethodError:
undefined method save!
“`##参考
https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md
【Ruby】if,else 真偽値による条件を組み合わせて処理
※初心者向け
※アウトプット練習の為開発環境
rails 6.0.4.4
ruby 2.6.5##概要
指定された数値の範囲による条件と真偽値による条件を組み合わせて処理を行うプログラムを実装。##問題内容
以下の要件を満たす in1to10メソッドを実装しましょう。**・第一引数のnumが1以上かつ10以下の範囲であればTrueを出力すること**
**・第二引数のoutside_modeがTrueの場合は、第一引数numが条件範囲外でもTrueを出力すること**
**・それ以外はFalseを出力すること**##雛形
“`ruby
def in1to10(num, outside_mode)
# ここに条件式を記述する
end# 呼び出し例
in1to10(5,false)
in1to10(11,false)
in1to10(11,true)
“`**出力例**
in1to10(5,false) →True
in1to10(11,false) →False
in1to10(11,true) →True**ヒント**
**論理演算子**
[Rails7] 後からBootstrap5を導入する
# 前提環境
“`
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
$ rails -v
Rails 7.0.1
“`設定などはRails7プロジェクトを作成したままのデフォルトです。
# cssbundling-rails gemをインストールする
Gemfileに以下を追加してインストールします。
“`diff:Gemfile
+ gem “cssbundling-rails”
“`“`
$ bundle install
“`# Bootstrap5(CSS)をインストールする
以下のコマンドを実行してインストールします。
“`
$ rails css:install:bootstrap
“`# sassのコンパイル用スクリプトを追加
`package.json`に、`”scripts”: { “build:css”: “sass ./app/assets/stylesheets/application.bootstrap.scss ./ap
[Ruby] Integerクラスのabsメソッド
学習したことのアウトプットとして
## absメソッド
Rubyの組み込みライブラリ
対象となる数値に対してabsメソッドを実行すると絶対値を取得することができる。すなわち`正の数の場合はそのままだが、負の数の場合は符号を取って正の数にした数値`が取得できる。“`ruby
num = 5.abs
#=> 5num = (-5).abs
#=> 5
“`[absメソッドのリファレンス](https://docs.ruby-lang.org/ja/latest/method/Integer/i/abs.html)
以上。
※補足等ありましたらコメントいただけると幸いです。
rails s が上手くいかない。rails newが作成できない時。
簡潔に書くと、
**rubyとrailsのバージョンの互換性**
に問題がある場合がある。
その為、下記のURLを確認して見直すことをおすすめする。
もし、互換性がないものであればURL通りにRuby、railsを入れ直してみると解決する可能性がある。
https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/補足:上記の方法は下記のようにPumaさえも立ち上がらない人向け
“`=> Booting Puma
=> Rails 5.2.6 application starting in development
=> Run `rails server -h` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGH