- 1. rails db:migrateしたのにDBに反映されなかった時の話①
- 2. 一覧表示を最新の10件を表示する方法
- 3. Rubyのブロックを解説してみた
- 4. Numo::NArray でワーシャル–フロイド法の多重ループを記述削減
- 5. 気象庁の過去気象データを Ruby でスクレイピング
- 6. git push heroku master時のエラー!Precompiling assets failed.
- 7. [初学者/At_Corder] A.Cookie_Exchangesを解いてみた
- 8. 自作アプリを作る マイクロポスト
- 9. Rails6でJavaScriptの動的読み込み
- 10. Railsでphina.jsの動的読み込み
- 11. 「Rails」urlとpathの違いを初心者向けに解説
- 12. Git,Githubを使用してherokuへデプロイ
- 13. エラーメッセージの日本語化
- 14. Ruby と Python で解く AtCoder ABC243 D
- 15. Rubyの基礎文法1(表示・計算・変数・メソッド)
- 16. 【個人note】Ruby on Rails
- 17. 【初心者向け】Ruby on Rails 入門(1) Ruby on Rails 紹介
- 18. RubyGoldの対策内容まとめ
- 19. Rubyのぼっち演算子について
- 20. 【Rails 6】片方の選択によってもう片方のオプションの値が変化する動的なセレクトボックスを作る
rails db:migrateしたのにDBに反映されなかった時の話①
# はじめに
1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
今回は rails db:migrateコマンドを実行した際にDBに反映されなかったことについて書きます。
長くなるので2つの記事に分けます。
まずは”NO FILE”というマイグレーションファイルができてしまったことについて書きました。
※Ruby2.6.5の環境を使用し学習しています。# 事象
rails db:migrateを実行すると下記のようにエラーになりました。
“`:ターミナル
% rails db:migrate
== 20220310073337 CreateDietrecords: migrating ================================
— create_table(:dietrecords)
-> 0.0140s
== 20220310073337 CreateDietrecords: migrated (0.0141s) ==================
一覧表示を最新の10件を表示する方法
# users/index.html.erbの一覧表示を最新10件にするコード
“`users_controller.eb
def index
@resolutions = Resolution.includes(:user).order(‘created_at DESC’).limit(10)
@articles = Article.includes(:user).order(‘created_at DESC’).limit(10)
end
“`
## 解説
– `order(‘created_at DESC’)`
一覧表示を最新から表示になります
– `limit(10)`
表示10件までになります。
Rubyのブロックを解説してみた
メタプログラミングRubyの4章を読んでアウトプットがてら解説記事を書いてみようとおもいます。
## まずは基本から
まずはブロックとは何かという基本的なものを確認しましょう。
“`do ~ end“`や“`{}“`で定義されたもので、メソッドが呼び出されたときのみブロックを定義できます。
そして、ブロックはどこでも存在できるコードではないんです。ローカル変数やselfといったものが必要になるんです。
これらはオブジェクトと関連性をもったもので**束縛**と呼ばれることもあります。
実際にコードを見ていきましょう
“`
def ex_method
yield
endvar = 1
ex_method do
var += 1
local_var = 0
endvar #=> 2
local_var #=> NameError (undefined local variable or method `local_var’ for main:Object)
“`
上記のコードのように、ブロック内で新しく束縛を定義したとき、ブロックが終了した時点でその束縛は
Numo::NArray でワーシャル–フロイド法の多重ループを記述削減
多次元配列[NArray](https://ruby-numo.github.io/narray/)の機能を利用すれば、[ワーシャル–フロイド法](https://ja.wikipedia.org/wiki/ワーシャル–フロイド法)の3重ループのうち**内側2つを書かなくてよくなる**。Rubyレベルの記述が減ることで計算速度も向上する。
(AtCoderのコンテストでスラスラ書けず、NArray不使用で提出してTLEに苦しんだので、きちんと纏めておくことにした。)
## コード
“`ruby
# n頂点m辺の重み付き有向グラフを標準入力から読み込み
n, m = gets.split.map!(&:to_i)
edges = Array.new(m) { gets.split.map!(&:to_i) }# 隣接行列を作成
d = Numo::Int64.new(n, n).fill(Numo::Int64::MAX >> 1)
d.diagonal[true] = 0
edges.each do |i, j, dist|
d[i, j] = dist if d[i,
気象庁の過去気象データを Ruby でスクレイピング
このページで Python でやっているのと同じことを、Ruby でやってみたものです。
https://qiita.com/Cyber_Hacnosuke/items/122cec35d299c4d01f10
元ページは簡単な HTML の読み方についても解説されてあります。
# やること
気象庁のサイト(例えば[こんな感じ](https://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=14&block_no=47412&year=2007&month=1&day=&view=))から、“`
札幌, 室蘭, 函館, 青森, 秋田, 盛岡, 山形, 仙台, 福島, 新潟, 金沢, 富山, 長野, 宇都宮, 福井, 前橋, 熊谷, 水戸, 岐阜, 名古屋, 甲府, 銚子, 津, 静岡, 横浜, 松江, 鳥取, 京都, 彦根, 広島, 岡山, 神戸, 和歌山, 奈良, 松山, 高松, 高知, 徳島, 下関, 福岡, 佐賀, 大分, 長崎, 熊本, 鹿児島, 宮崎
“`の都市の、
“`
年月
git push heroku master時のエラー!Precompiling assets failed.
git push heroku master時に以下のエラーが発生した際の解決策を記録
**新規アプリケーションをherokuへ反映する際にエラーが発生した。**
“`ターミナル上のエラー文.
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to ‘https://git.heroku.com/アプリ名.git’
“`原因を調査してみると、ターミナル上に
“`ターミナル上のエラー文.
Precompiling assets failed.
“`
という文があった。**これは「アセットのプリコンパイルに失敗しました」という意味だった。**
しっかりと上までターミナルを見てみると
ModuleNotFoundError: Module not found: Error: Can’t resolve ‘../tweets’ in ‘/tmp/build_259621bf/app/javascript/packs’というメソッ
[初学者/At_Corder] A.Cookie_Exchangesを解いてみた
# [初学者/At_Corder] A.Cookie_Exchangesを解いてみた
## 目次
– 概要
– 解答と説明
– まとめ## 概要
A.Cookie_Exchangeの問題です。## 解答と説明
問題文は下記のサイトにて、ご覧いただけます。https://atcoder.jp/contests/agc014/tasks/agc014_a
##### 解答
“`ruby:cokkie_exchange.rb
a,b,c = gets.split.map(&:to_i)arr = [a,b,c]
count = 0if arr.uniq.one? && arr.all?(&:even?)
puts -1
else
while [a,b,c].all?(&:even?)
a_b = a+b
b_c = b+c
c_a = c+a
a = b_c/2
b = c_a/2
c = a_b/2
count += 1
end
puts count
end
“`
##### 説明
**<流れ>*
自作アプリを作る マイクロポスト
## マイクロポストコントローラのアクションを指定する
### config/routes.rb
“`rb
Rails.application.routes.draw do
get ‘password_resets/new’
get ‘password_resets/edit’
get ‘sessions/new’
root ‘static_pages#home’
get ‘/signup’, to: ‘users#new’
post ‘/login’, to: ‘sessions#create’
delete ‘/logout’, to: ‘sessions#destroy’
resources :users
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :microposts, only: [:crea
Rails6でJavaScriptの動的読み込み
## 実現したいこと
JavaScript内からDB内のデータを動的に読み込みたい✅## 開発環境
Rails6系
Ruby3系アプリ:[Muscle Beat](https://www.muscle-beat.com)(スマホ専用筋トレ系音ゲー)
[GitHub](https://github.com/jibiking/muscle_beat)
テーブル(例)↓
[](https://gyazo.com/a0eef96b76e54d3df43a1c5255f5566e)## 結論
view内の“`scriptタグ“`に“`erbタグ“`を用いて動的に読み込ませたいJSを記載します!たしかにRails6系のJavaScriptの記述は“`app/javascript/packs“`以下にするのが通常です。
しかし上記pack
Railsでphina.jsの動的読み込み
## 実現したいこと
バックエンド(Rails)から保存したDB内のデータを呼び出して、動的にフロント(phina.js)に入れて、ゲームをプレイできるようにする✅[phina.jsとは](https://phinajs.com/):ゲームを簡単に作ることのできるJavaScriptのライブラリ
## 開発環境
Rails6系
Ruby3系
phina.js 0.2.3(CDN)
アプリ:[Muscle Beat](https://www.muscle-beat.com)(スマホ専用筋トレ系音ゲー)
[GitHub](https://github.com/jibiking/muscle_beat)
テーブル(例)↓
[](https://gyazo.com/a0eef96b76e54d3df43a1c5255f5566e)## 1. viewでphina.jsの環境構築
ゲームプレイ画面を作成するvi
「Rails」urlとpathの違いを初心者向けに解説
# _urlと_pathの違いについて
簡単に申し上げるとurlは絶対パスでpathは相対パスである。
### urlについて解説
_urlの形は絶対パスである。例えば、
“`new_user_url“`という書き方は “`http://localhost:3000/users/new“`と書くのと同意である。
リダイレクトではHTTPの性質上、完全なURLが求められるのでredirect_toメソッドの引数はURLで指定するべきである。
逆に言えばredirect_toメソッドの引数でしか_urlという書き方は使われない。
### pathについて解説_pathの形は相対パスである。
“`new_user_path“` という書き方は “`/users/new“`と書くのと同意である。
_pathという形は基本的にredirect_to以外で使うと覚えておけば良い。
例えばform_withやlink_toなど。## 「“`redirect_to @post“`」という書き方(上級者向け)
“`redirect_to post_url(@p
Git,Githubを使用してherokuへデプロイ
初めての投稿になります。
こちらは、私の備忘録として残しておきます。# 前提
デプロイしたいアプリが作成済み、GitHubにアカウント登録済み、GitHubにリポジトリを作成済みで、ブランチを切っている状態で、今回はrailsで作成したアプリをデプロイしていきます。# 実行の流れ
“`!!!
まず、ステージングエリアにカレントディレクトリ以下のファイルをまとめて追加します
git add .次に自分が変更したファイルをローカルリポジトリに保存します。
git commit -m “コミット名”Githubにプッシュします。
git push –set-upstream origin ブランチ名こちらでmasterブランチに変更します。
git checkout masterGithubにプッシュしたブランチ名を使用してマージを行います。
git merge ブランチ名最後にherokuにデプロイします。
git push heroku
“`
これでherokuへのデプロイが完了です。# まとめ
初めての投稿なので、誤字脱字やご指摘等ありましたらコメ
エラーメッセージの日本語化
オリジナルアプリを開発する過程で、ユーザー登録時に入力に誤りがあった場合に表示されるエラーメッセージを日本語化に。
備忘録のため手順を記載する。
まずはapplication.rbを編集。
“`ruby:config/application.rb
module Grucale
class Application < Rails::Application version. config.load_defaults 6.0 config.i18n.default_locale = :ja #追記 end end ``` ※``:ja``は日本語設定を意味する 次にGemfileの記述 ```rubu:Gemfile #最下部に追記 gem 'rails-i18n' ``` 追記したら``bundle install``を実行。 ここまでで挙動を確認すると、``Passwordを入力してください``のように一部しか日本語化されていない。 それを解消するために英語から日本に翻訳してくれるファイルを作成する。 config/localesディレ
Ruby と Python で解く AtCoder ABC243 D
# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
https://atcoder.jp/contests/abc243/tasks/abc243_d今回のテーマ、ビット演算
この問題は、扱う数値が大きいので計算が大変そうに見えます。
しかし、数値(10進数)を2進数で表しよく見ると...

+ S の i 番目の文字が `U` のとき、今いる頂点の親に移動する
-> 2進数の右側の文字を除去
+ S の i 番目の文字が `L` のとき、今いる頂点の左の子に移動する
-> 2進数の右側に`0`
Rubyの基礎文法1(表示・計算・変数・メソッド)
# 目次
– [表示](#表示)
– [計算](#計算)
– [変数](#変数)
– [メソッド](#メソッド)# 表示
「print」「puts」「p」
“`Ruby
print “Hello”
print “World”
print “10”
print 10
#=> HelloWorld1010
# 末尾に改行なしputs “Hello”
puts “World”
puts “10”
puts 10
#=> Hello
#=> World
#=> 10
#=> 10
# 末尾に改行ありp “Hello”
p “World”
p “10”
p 10
#=> “Hello” #文字列
#=> “World” #文字列
#=> “10” #文字列
#=> 10 #数値
# 末尾に改行あり
# データの型(文字列か数値か)が分かるように表示できる
“`ダブルクォーテーションとシングルクォーテーションの違い
“`Ruby
puts “Hello\nWorld”
#=> Hello
#=> World
# バックスラッシュ記法が出力結果に反映されるputs
【個人note】Ruby on Rails
## 慣習・常識
#### Rubyでは真偽値(true, false)を返すメソッド名は慣習的に’?’をつけることが多い。
参考:[Array#include?](https://docs.ruby-lang.org/ja/3.0/class/Array.html#I_INCLUDE–3F)—
#### 可読性を考え、一つのメソッドが10行くらいに収まるよう心がける。—
#### “(ダブルクォーテーション)は入れ子にする事はできない。
“(ダブルクォーテーション)は入れ子にすることはできないので、外側は’(シングルクォーテーション)に変えると良い。“`:悪い例
“>
“`“`:良い例
RubyRailsRubyonRails6.0【初心者向け】Ruby on Rails 入門(1) Ruby on Rails 紹介
:::note info
この記事は読者が既にRubyとweb開発基礎内容を習得すると仮定
Ruby on Railsの使え方以外、Why(なぜ使う),What(何ができる),他のweb開発仕組みについてもそれぞれを説明します。
筆者は日本語の初心者ですから、もし記事の文法などが間違えたら、ぜひコメントして教えてください。
= w =
:::
# Ruby on Rails とは何?
名前の通り,Rubyを基づくのWeb frameworkであるWeb frameworkというのは、一言に言うと「Web開発には必要な機能を予め用意したの枠組み」である。規定された基準の上で開発を行うと,開発効率やソフトウェア品質を向上することが期待られる。
**Ruby on Rails二つの原則**
1. DRY(Don’t repeat yourself)同じコードを繰り返しないで
2. CoC(Convention over Configuration)設定よりも規約を優先する
## Ruby on Railsの Why(なぜ使う)
開発者として、Ruby on Railsの基準に従って、い
RubyGoldの対策内容まとめ
3ヶ月ほど前にRubyGoldに合格したので行った対策等をまとめました。
# 受験者ステータス
– Railsを使った開発経験 2ヶ月程度
# 結果
94点/100点
# 対策内容
– [『公式教本』](https://www.amazon.co.jp/%E6%94%B9%E8%A8%822%E7%89%88-Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8/dp/4774191949) (おすすめ度★★★)
公式の本だけあって、丸々同じ問題が本番でいくつか出た。
– [CTC模擬問題集 (おすすめ度★★★)]( https://www.school.ctc-g.co.jp/ruby/training_ruby_gold_01_10
Rubyのぼっち演算子について
# ぼっち演算子`&.`
「レシーバがnilのときに起こるエラーを回避するため」に`.`の代わりに` &.`を使います。
レシーバがnilでもエラーにならず、nilを返してくれます。“`ruby
user = User.new
user.name # => “ユーザー名”object = nil
object.name # => NoMethodError
object&.name # => nil
“`ifや三項演算子でも書くことができます。
“`ruby
# ifを使った書き方
name = if object
object.name
else
nil
end# 三項演算子を使った書き方
name = object ? object.name :nil
“`
【Rails 6】片方の選択によってもう片方のオプションの値が変化する動的なセレクトボックスを作る
## 概要
タイトル通りのものを作ります。文字だけだとわかりにくかったら、次の完成イメージを見てください。
## 完成イメージ

## 仕様
– Ruby 3
– Rails 6
– MySQL 5.7
– Bootstrap 5
– Docker※ Bootstrap はバージョン5から JQuery が不要になり導入方法が少し変わったのでご注意ください。
## 下準備
まず最初に下準備から始めていきます。
### 各種ディレクトリ & ファイルを作成
“`
$ mkdir rails-dynamic-selectbox && cd rails-dynamic-selectbox
$ touch Dockerfile docker-compose.yml entrypoint.sh Gemfile Gemfile.loc