- 0.0.1. これから学ぶ言語について
- 0.0.2. 初心者 三つの整数 特定の差がある場合の現し方
- 0.0.3. pp は require 無しで使える
- 0.0.4. macでruby on railsの環境構築
- 0.0.5. [Ruby on Rails] 詳細画面に遷移
- 0.0.6. 【Rails、JavaScript】モーダルウィンドウに写真詳細画面を表示させる
- 0.0.7. 配列を代入した変数の正体を暴いてみた
- 0.0.8. Rails | 動的ディスパッチを使って検索ロジックを一行にしてみる試み
- 0.0.9. 【Ruby on Rails】Active Record 関連付け(アソシエーション)1対多についての超簡単なまとめ
- 0.0.10. ログアウト時のActive::RecordNotFoundの解決例
- 0.0.11. [Rails] credentials.yml.enc、master.keyについて。
- 0.0.12. 【Rails】 SimpleCovの概要・導入・オプション
- 0.0.13. rubygems.org に接続できない
- 0.0.14. Railsチュートリアル3章でテストがうまくいかない(Rubyのバージョンに注意)
- 0.0.15. ○rudyとrudy on rails(rails)の違いについて○
- 0.0.16. 【スマホ対応】ドラッグ&ドロップで連番の並び替えをする。「acts_as_list」+「Sortable.js」
- 0.0.17. Progate Ruby メモ
- 1. 学習コースⅠ 文法 変数 条件分岐
これから学ぶ言語について
#HTML
##HTMLとは
– HTMLはHyper Text Markup Languageの略である。
– Webページを作る際に、マークアップ言語という視覚表現や文章構造を記述するための最も基本的な言語が使われるが、HTMLはこのマークアップ言語のうちの一つである。
– Webサイトやアプリ、電子メールなどを適切に表示するために使用されている。##HTMLでできること
– ホームページビルダーなどのWeb制作ツールがなくてもWebサイトを制作できる。
– 無料配布されているWebサイトのテンプレートを自分なりにアレンジすることができる。#CSS
##CSSとは何か
– CSSはCascading Style Sheetsの略である。
– 先述したHTML文章に、装飾やレイアウトを施すために使用される。##なぜCSSが必要か
– Webページの見た目はHTMLでも指定することができるが、HTMLだけで行うとWebページの情報構造が乱れ、検索エンジンに理解されにくく、ブラウザによって表示のされ方が変わってしまう。
– そのため、HTMlとは別のファイルでCSSによってス
初心者 三つの整数 特定の差がある場合の現し方
本日な問題はこちらでした。
メソッドに3つの整数a b cを与えます。
・「aとbの差が1」または「aとcの差が1」であり、かつ「bとcとの数値の差が2以上」の場合はTrue
・それ以外はFalse
と出力するメソッドを作りましょう。出力例:
close_far(1, 2, 10) → True
close_far(1, 2, 3) → False
close_far(4, 1, 3) → Trueabsメソッドを使いましょう。
回答がこちらです。
“`ruby
def close_far(a,b,c)
x = (a-b).abs
y = (a-c).abs
z = (b-c).absif x == 1 && z >= 2
puts “True”
elsif y == 1 && z >= 2
puts “True”
else
puts “False”
end
end
“`
まず、初めの記述で、abcそれぞれの差分を算出し、絶対値に変換します。x == 1 && z >= 2で、「aとbの差が1」であり、かつ
pp は require 無しで使える
# pp とは
pen-pineapple のことではない。
Ruby のメソッドで,ややこしいオブジェクト[^yy]もいい感じに表示してくれるもの。
用途は `p` メソッドと同じだが,それよりもっと分かりやすくきれいに表示してくれることになっている。メソッド名は pretty print から。`p` と `pp` でどう違うかはよく知らないけど,たとえば要素数が多いハッシュを表示させると,後者では改行を入れてくれるようだ(小さいハッシュだと変わらない)。
“`rb
p “A”.upto(“K”).with_index.to_h
# => {“A”=>0, “B”=>1, “C”=>2, “D”=>3, “E”=>4, “F”=>5, “G”=>6, “H”=>7, “I”=>8, “J”=>9, “K”=>10}pp “A”.upto(“K”).with_index.to_h
# => {“A”=>0,
# “B”=>1,
# “C”=>2,
# “D”=>3,
# “E”=>4,
# “F”=>5,
# “G”=>6
macでruby on railsの環境構築
新しいMacが届いたので、rubyで開発環境を作ることにした
ruby ruby 2.6.3p62
rails 6rails new xxxx
でまずはプロジェクトを作った
rails s
でロカールにアクセスしたら表示ができなかった。。。
ログを見たら
Please run rails webpacker:install Error:
が出てた
webpackが無いのね
rails webpacker:install
を実行したら
sh: node: command not found
sh: nodejs: command not found
Node.js not installed. Please download and install Node.jsが出た。。。
なかなか進まない
nodeのインストールの準備
brew install nodebrew
をやって
nodebrew -v
で確認nodeのインストール
nodebrew ls-remote でインストールできるバージョンの確認
nodebrew install-b
[Ruby on Rails] 詳細画面に遷移
##詳細画面への遷移方法
まず、ルーティングの設定をします。
今回は仮に**items**とします。
![スクリーンショット 2021-02-10 23.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1078698/29c50df4-848b-2a5e-8dc1-7b2607f240cb.png)
次に**index.html**に詳細ページへ飛ぶ為の記述を書いていきます。
![スクリーンショット 2021-02-10 23.49.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1078698/ce8775b6-7cf6-9fc7-4bac-6a5d46cbfb1d.png)どのアイテムの情報か読み込めるようにパスには必ず**id**が必要になります。
上記の**item_path**は削除機能などと同じ**Prefix**なので
それを見分けるために、lin
【Rails、JavaScript】モーダルウィンドウに写真詳細画面を表示させる
# 概要
一覧の写真をクリックすると、モーダルウィンドウ内に写真詳細画面が表示される機能を実装します。# 参照
### モーダルウィンドウ基本的なモーダルウィンドウの作成方法とアニメーションの付け方は、これらの記事を参考にしました。
– JavaScriptでモーダルウィンドウを作ろう(ドットインストール)
https://dotinstall.com/lessons/modal_js_v3– モーダルウィンドウ・ダイアログウィンドウの作り方1(HTML、CSS、JavaScriptで作る)
– モーダルウィンドウ・ダイアログウィンドウの作り方2(HTML、CSS、JavaScriptで作る)
### Ajax
remote: trueによるAjaxの実装方法は、この記事がわかりやすいです。– 【Rails】remote: trueでフォーム送信をAjax実装する方法とは?
配列を代入した変数の正体を暴いてみた
開発環境
Ruby 2.6.5# 配列を代入した変数の正体
ある程度プログラミングを経験している方からすると当たり前のことだと思いますが、結構実装途中で意図しない挙動をするのでメモとして記録します。(一応技術書を参考にしてますが、違ったらご指摘ください)## コード実行
まず下記のコードの実行結果を予想してみてください。“`ruby.rb
array = [1,2,3]array2 = array
array2[0] = 124
puts array[0]
“`
実行結果は
“`
124
“`
になります。ここで大事なのは**配列の数字自体は変数に代入されていない**という点です。
## 配列を代入した時の裏側
このとき裏側で起こっているのは**配列の保存場所を示した番号**が変数として代入されています。
このように保存場所を示す番号を参照して値を呼び出す変数を参照型変数と言います。
対して、直接値を保存する変数を基本型変数と言います。“`ruby.rb
num = 5
num2 = num
num2 = 6
puts num
“`
Rails | 動的ディスパッチを使って検索ロジックを一行にしてみる試み
良いこと思いつたと思って、一回これをやって先輩に怒られたので真似しない方がいいです。
ただ自分的に結構おもしろいなあと思ったのでメモ。## 概要
[株式会社万葉の新入社員教育用カリキュラム](https://github.com/everyleaf/el-training)のタスク管理アプリを使います。
既に@yokku21 さんが終わらせたものをフォークしてきました(どうもありがとうございました)。タスク一覧画面では、タスクをタスク名、ステータス、優先度、ラベルで絞り込むことができ、さらにそれらを並び替えることができます。
今回、ここを一行にしてみたいと思います。## プルリク
https://github.com/yoyoyoheyheyhey/task_app/pull/1## ビフォーアフター
### ビフォー(イメージ)
“`ruby
# app/controllers/tasks_controller.rbdef index
@tasks = current_user.tasks.with_title(params[:title]).
【Ruby on Rails】Active Record 関連付け(アソシエーション)1対多についての超簡単なまとめ
モデル間の1対多、多対多のなどの関連付けの事をアソシエーションという
アソシエーションについては現実世界に置き換えるとわかりやすい。
今回はメッセージ投稿アプリを例にしている。
「一人のユーザーは何個もメッセージを投稿できる」= 1対多 というように現実的に考えると、
どのような関連付けが行えるかが見えてくる。## 1対多の関連付け(アソシエーション)
メッセージ投稿機能をもったアプリの場合は次のようになる。– Userテーブル
|id|email|備考|
|—|—|—|
1|arai@example.com|新井さん|
2|saitou@example.com|斎藤さん|
3|suzuki@example.com|鈴木さん|– Postテーブル
|id|content|user_id|備考|
|—|—|—|—|
1|ありがとう|2|斎藤さんのメッセージ|
2|最高!|1|新井さんのメッセージ|
3|よろしく|3|鈴木さんのメッセージ|
4|おはよう|1|新井さんのメッセージ|
5|おやすみ|2|斎藤さんのメッセージ|というように「あり
ログアウト時のActive::RecordNotFoundの解決例
ActiveRecord::Record Not Found in UsersController#show
Couldn’t find User with’id’ = sign_out読み取れることは、idにsign_outが呼ばれていること、
ログアウトを押したらusers_controller.rbのshowアクションが呼ばれていることです。“`ruby
get”users/:id”,to:”users#show”
“`ログアウトの記述link_toの末尾にmethod::deleteを記述していないので。
本来のログアウトのルーティング(rails routes)
delete”users/sign_out” to:”devise/sessions#destroy”を見つけられず,それに似たget”users/:id,to:”users#show”を読み込んでしまったのがエラー原因です。
[Rails] credentials.yml.enc、master.keyについて。
## 結論
秘密鍵: master.key
公開鍵: credentials.yml.enc
## master.keyとは
・暗号化された「credentials.yml.enc」の記述を復号化するための鍵のようなもの
####・アプリを消して、同じものをクローンした時点で、無くなっているから、credential.yml.encを再生成する必要がある。
[[Rails] ActiveSupport::MessageEncryptor::InvalidMessageの解決方法](https://qiita.com/kazumawada/items/c1dd676a42f9286bfccf)## credentials.yml.encとは
中身はこんな感じで暗号化されている
“`bash
LEebK7Oel2pwADz3qzaLXWYHR12UexPU097wLK9FPnnRjZXPY7ZtSBsr96yCcC5r3dKRZrzzvwkmHO7hmuMgF+fiEOEWczncvQ50XuqMC2GDXiAsK0AyuF59eJ7EzzjiYT6FLS9Hvqk8W6
【Rails】 SimpleCovの概要・導入・オプション
#はじめに
「SimpleCovって何?」っていう状態から導入をしましたので、調べたことについてまとめておきます。
全くSimpleCovについて知らない方が、個人開発や業務で導入して設定するまでの参考になれば幸いです。ちなみに筆者は最近エンジニアとして働き出したレベルの者です。
#目次
– [そもそもSimpleCovとは](#そもそもSimpleCovとは)
– [コードカバレッジとは何か](#コードカバレッジとは何か)
– [導入方法](#導入方法)
– [使い方](#使い方)
– [オプションの設定](#オプションの設定)#対象読者
・SimpleCovってそもそも何という方
・SimpleCovは知っているけど実際の導入の仕方を知りたい方
・導入はとりあえずできるけど、追加でどんなオプションがあるか知りたい方#環境
– Ruby 2.7.2
– Rails 6.0.3
– rspec-rails 4.0.2
– simplecov 0.21.2#そもそもSimpleCovとは
・Ruby用のコードカバレッジ分析ツール
(分かりやすく言うと、コードカバレッ
rubygems.org に接続できない
`bundle install` や `gem update` が実行できない問題に遭遇した
“`powershell
PS > bundle install
Fetching source index from https://rubygems.org/
Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Could not fetch specs from https://rubygems.org/
“`
Railsチュートリアル3章でテストがうまくいかない(Rubyのバージョンに注意)
タイトルの通りのエラーが発生し、ググってもなかなか解決しなかったので、他の人も同様の問題を抱えた際に参考にできればいいなと思ったので備忘として記事に残します。
##困ったこと
railsチュートリアル3章で“$ rails generate controller StaticPages home help“
実行後、testの中身を変えずにtestしたところ 以下のエラーが表示されテスト自体ができない“`
$rails t
/Users/kiyomasa/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/capybara-3.23.0/lib/capybara/selector/filters/node_filter.rb:9:in
`initialize’: wrong number of arguments (given 4, expected 3) (ArgumentError)
#以下略“`
##結論
Rubyのバージョンが3.0.0で行ってましたが、**Capybaraはバージョン3
○rudyとrudy on rails(rails)の違いについて○
#1. rudyとrailsとは
まず、最初にrudyとrailsについて大まかに説明すると
__・rudy : proguramming 言語__
__・rails : フレームワーク __
(4章でお伝えしますが、アクションで変数を定義するのが一般的です)という違いになります。
*railsはproguramming言語ではないので注意してください。#2. 具体的な違い
1章(1.rudyとrails)だけではあまりピンとこないと
思われる方のほうが多いと思うのでこの章では具体的な説明をしていきたいと思います。__○rudyとは__
rudy on railsやwedアプリケーションフレームワークを
使うことができるpuroguramming言語のことを指します。
__○railsのフレームワークとは__
railsのフレームワークとはrudyで作られたシステムの事です。
rudyで作られてるならrailsの役割必要なの?って思いますよね。
答えから述べるとかなり必要です。
例えば、手で餅をついた後にパッケージしたりするのと機械で餅をついた後にパッケージした
【スマホ対応】ドラッグ&ドロップで連番の並び替えをする。「acts_as_list」+「Sortable.js」
# ドラッグ&ドロップで自動連番の処理を実装する
### イメージ
[![Image from Gyazo](https://i.gyazo.com/16b9256b293b1a1d3fa813c720bb1d1b.gif)](https://gyazo.com/16b9256b293b1a1d3fa813c720bb1d1b)### 実装経緯
– 並び替え機能はメニュー表など管理画面で実装頻度が高かった。
– 管理画面もスマホやタブレットに対応してほしいという声も多かった。実装以前は、編集フォームに遷移して順番(`position`)カラムの整数値をセレクトフィールドで選択して更新していました。
また、自動連番処理はモデル側でしてました。知識を整理するため簡単なアプリ上に作ってみようと思います。
### 使用するライブラリ
– [acts_as_list](https://github.com/brendon/acts_as_list)
順番の並び替えの制御を担当する。
同ポジションにパフォーマンスが上の[ranked-model](https://github.co
Progate Ruby メモ
学習コースⅠ 文法 変数 条件分岐
「puts “○○”」というRubyのコードを書くと、putsの後の○○という文字がコンソールに出力される
putsの後には「半角スペース」をあける必要がある
文字列はクォーテーション( ‘ もしくは ” )で囲みます。また、クォーテーションは必ず半角で記述しなければなりません。
クォーテーションで囲んでいないとエラーが発生します。Rubyのコメントは #
Rubyの変数が2語以上のときは、_ (アンダーバー)で区切る
文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができます。
これを「変数展開」と呼びます。
実はダブルクォーテーションを使った文字列の場合しか変数展開はされません。シングルクォーテーションの場合は、変数展開が行われず、そのまま文字列として出力されてしまうので注意しましょう。変数を文字列に含める場合は、基本的に変数展開を使う
Rubyのif文は、if と end で囲む
== != のように、JavaScriptよりひとつ少ないelsifをelseifと
ポリモーフィズムって何?
# はじめに
現在、Rubyと並行してJavaの学習を行っています。
その中で、ポリモーフィズムという言葉がでてきたので学んだことを備忘録として残したいと思います。# ポリモーフィズムとは
日本語では「多様性」という意味です。
1つの名前の複数のメソッドを対象に応じて定義できることなのです。現状の私の知識では、「オーバーロード」「オーバーライド」の2点を学びましたので、
説明していきます。## オーバーロードとは
同一のクラス内で同一名の複数のメソッドを定義すること。
区別の仕方は、メソッドの引数や、戻り値の型の違いで区別する。下記のコードですが、同じクラス内に同名のメソッドがありますよね?
しかし、メソッドに引数があるかないかで呼び出すメソッドを区別しています。“`java
class Parent{
//メソッド
void sample(){
System.out.println(“parent”);
}
// オーバーロードされたメソッド
void sample(String s){
System.out.println(“s
deviceを導入する順序
#deviseとは?
deviseとはユーザー登録が簡単に実装できるGemです。こちらをインストールすることでよくアプリなどで見る【ログイン、ログアウト】の画面を簡単に作ることができます。また、新規登録に必要な要素も名前やメールアドレス、ニックネーム、会社名など自分が設定したい要素を付け加えることもあっという間にできます。
今回はそのdeviseを自身のアプリケーションへ導入する方法について書きたいと思います!##導入の順序
1,Gemを導入する
Gemfileに記述し、bundle installを実行します。“`ruby:Gemfile
#1番下に記述
.
.
.
.
.
gem ‘devise’
“`
“`terminal:ターミナル
Gemをインストールする
% bundle install
“`
2,deviseをインストール
bundle installを実行するだけでは、まだdeviseを使うことができません。
ターミナルを使い、deviseをインストールし、
アプリケーション内で使用できるようにしましょう。“`terminal:ター
Digdag の Ruby scripts でメソッドに引数を渡す方法
# はじめに
Digdag の [Ruby scripts](https://docs.digdag.io/operators/rb.html) では `rb>: Task::MyWorkflow.my_task` というような感じで Ruby のメソッドを実行することができますが、
この `my_task` メソッドに対して引数を渡したい場合の解決方法を記載します。# 結論
引数が必要なメソッドを実装し、Digdag のパラメータで同名のパラメータを渡してやると Digdag がよしなにやってくれます。
“`ruby
def my_task(hoge:)
puts hoge
end
“`“`
+task1
_export:
hoge: ‘Hello, world!’
rb>: Task::MyWorkflow.my_task
require: tasks/my_workflow
“`# 詳細
[Digdag のこのあたり](https://github.com/treasure-data/digdag/blob/v0.9.42/di