- 1. テストデプロイした後に色々更新していよいよデプロイ!
- 2. cloud9 でEC”に接続する
- 3. gut hubからpullしてくる
- 3.1. 【Rails】LazyHighChartsで箱ひげ図を作成
- 3.2. GitHub Actions
- 3.3. Rails6でJavaScriptを書く
- 3.4. Ruby on Rails5にBootstrap4を導入しようとしたらstack smashing detectedエラー
- 3.5. [Ruby] AtCoder過去問 C – Prison
- 3.6. AWS LambdaをRubyのコンテナで動かしてみる
- 3.7. 【Rails】「教材シェア」アプリを作成しました
- 3.8. [Rails]基本理念について
- 3.9. RubyとPythonの基本構文の違いをまとめ
- 3.10. railsチュートリアル第6章 ユーザーオブジェクトを検索する
- 3.11. 「1 – 20 / 35件 < >」のような日本語ページネーションの追加[Rails, kaminari]
- 3.12. 本番環境で背景画像を表示
- 3.13. 【Ruby on Rails】Captureメソッドを使ってテンプレート化をする方法
- 3.14. 破壊的メソッドと非破壊的メソッドの違い
- 3.15. [Ruby] AtCoder過去問 B – Increment Decrement
- 3.16. Ruby と Rails のバージョン表
- 3.17. 【Rails】非同期によるDMチャット機能の実装【細かく噛み砕いて解説】
WSL2で ‘rails new’ できるけど ‘rails s’ できない方へ
# はじめに
最近,Ruby on Rails 環境を作成していたのですが,思わぬところで躓きました…`rails new` はできるんです.
`rails s`した時,サーバーが立ち上がらず,エラーが出てしまいました.キーワードは`yarn`でした.
# 事前環境
“`
wsl2: Ubuntu-20.04
node: 14.17.1
rails: 6.1.4.1
“`# webpackerは入っていますか?
`rails s`した時のエラー文に以下のような部分はありませんか?“`bash
(略)
Please run rails webpacker:install
(略)
“``rails webpacker:install`ができませんか?
まさに私と同じ状況ですので,次を見てみてください.# yarnは入っていますか?
私はまさにこれでした.“`bash
npm install –global yarn
“`yarnを導入した後先ほどのコマンドを実行してみてください.
もしくは`rails new`の時に自動で`webpacker
【Rails】学習アプリにおける進捗状況をprogressバーで表現する
rails 初学者のアウトプット用投稿です。同じ結果を得られるより良い書き方がございましたらコメントでご教示頂けると幸いです。
#実現したいこと
学習アプリ作成においてユーザーの個人ページ(user_controllerのshowアクション)に一週間、どのくらい学習を行なったのかをhtmlのprogressタグで見える化する。今回はanswerモデルにそれぞれの学習内容が保存されており、answerの作成数をカウントし、それを学習量の算出基準とする。
イメージ図(下記)
![FEBA03C7-F478-4A4E-B8ED-545C9F588945_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1640672/72761668-1709-023e-484d-fe2c0051f2b2.jpeg)#実装の流れ
①userに紐づいたanswerモデルから一週間分のデータを配列として取り出す。②①で取り出したデータからさらに曜日だけを配列として取り出す。
③show.html
(テスト)デプロイした後の更新の流れ
テストデプロイした後に色々更新していよいよデプロイ!
なにするかわからない泣
cloud9上では動く(ほぼ完成)のでgit hubにpushしてec2の仮想サーバに移って、git hubからpullしてくればipアドレスで見ることができるそう
今触っているcloud9と仮想のパソコンEC2の考えが理解していなかった私
cloud9 でEC”に接続する
“`
username:~/environment $ ssh -i ~/.ssh/practice-aws.pem ec2-user@xx.xx.xx.xxxx.xx.xx.xxはパブリックIPアドレス
“`gut hubからpullしてくる
“`
[ec2-user@ip-xx.xx.xx.xx ] cd アプリ名
[ec2-user@ip-xx.xx.xx.xxアプリ名] git pull 〜
“`“`:gemの変更
[ec2-user@ip-xx-xx-xx-xx アプリ名]$ bundle instal
【Rails】LazyHighChartsで箱ひげ図を作成
## 1.はじめに
閲覧していただきありがとうございます。
今回作成したアプリの経緯や開発の苦悩などをまとめました。
よろしければ、ご覧ください。
## 2.関連URL
アプリ:https://box-test-app.herokuapp.com/
Github:https://github.com/suugakusan/box_test
## 3.アプリ概要
数値を入力するだけでその箱ひげ図を作成することができるアプリです。* 箱ひげ図の作成・編集・削除機能
* 数値の入力・削除
* ログイン機能
* ゲストログイン機能## 4.アプリの制作背景
中学2年生の数学で学ぶ箱ひげ図ですが、教科書の内容を扱うだけでは、理解が不十分になります。特に、四分位数を求めることはできても、箱ひげ図から実際のデータを予測できる力が足りません。
そこで、数値を入力するだけで箱ひげ図を作成できるアプリがあれば、箱ひげ図を苦手とする生徒を救うことができるのではないかと思い制作しました。## 5.機能一覧
| |機能 |gem |
|:—: |:—: |:—: |
|1 |
GitHub Actions
githubuのリポジトリ画面「Settings」をクリックする
>>「option」の「Secrets」をクリック
>>「New Secret」をクリックする![スクリーンショット 2021-09-25 21.21.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1801328/f70eaffd-776e-13c7-4e38-33b0f413144e.png)
3つ設定していく
HOST_NAME : EC2のパブリックIPアドレス
USER_NAME:ec2-user
PRIVATE_KEY:EC2上かCloud9上の~/.ssh/id_rsaの値IPv4 アドレスをEC2からコピーして
“`
Name内に——————————————–
HOST_NAME |
————————————
Rails6でJavaScriptを書く
# はじめに
初めてRuby on Railsを触ることになり、JavaScriptを使ってみることになった。
うまく動く資料が見当たらなかったため、備忘録として書いておくことにした。# JavaScriptの実装
## JavaScriptの書く場所
app > javascript > packs
– file下に制作のファイルを作成するのがおすすめ
– 自分はusersというファイルを作成し、その下にjsファイルを作成した
## jsファイルに書くべきこと
– 読み込み時に表示“`js
window.onload = function(){
//中略
//ウィンドウが読み込まれたとき表示する
}
“`
– 動作により呼び出す場合“`js:app>javascript>packs>user>common.js
window.onchange = function hogehoge(){
//中略
//自分はonchangeで呼び出しをしたためこのように記載した
}
“`##書いたjsを読み込ませる
“`js:app>javascript>packs>ap
Ruby on Rails5にBootstrap4を導入しようとしたらstack smashing detectedエラー
# 目的
Apple M1チップ搭載のMac上のDocker環境でRails5を動かしています。ベースのイメージは`ruby:2.7.3`です。(ちなみに`ruby:2.5.8`でも同様の現象が生じました。)Rails自体は問題なくインストール、pumaでの起動ができるのですが、問題はBootstrapの導入を試みたときです。世の指南書にあるようにGemでBootstrapをインストールし、サーバを再起動して、適切に`application.scss`を記述して、いざブラウザ越しにアプリケーションへアクセスすると無残にも「このサイトにアクセスできません」状態となります。サーバ側のログを確認すると
“`
*** stack smashing detected ***:terminated
“`とのこと。この`stack smashing detected`エラーをGoogleで検索してみると、C言語でスタックオーバーラン等が起こった時に出るエラーという解説がたくさん出てきます。**Gem使っていてC言語のエラーに遭遇するとか想定外**です。
このエ
[Ruby] AtCoder過去問 C – Prison
##はじめに
AtCoder過去問C問題をRubyで解いてみました。
よろしくお願いします。問題はこちらから確認してください↓
https://atcoder.jp/contests/abc127/tasks/abc127_c
##C – Prison
まずは入力受け取ります。“`ruby
n, m = gets.split.map(&:to_i)
ary = readlines(chomp: true).map{|line| line.split.map(&:to_i)}
“`2行目は複数行に複数要素が存在するときに二重配列として受け取ります。
入力例1でいえば“`[[1, 3], [2, 4]]“`という感じで受け取ります。この問題の答えの法則はRの中の最小値とLの中の最大値の差に+1した数字が答えになります。
現在の配列では扱いにくいのでL(左側)だけをまとめた配列とR(右側)だけをまとめた配列を作ります。
“`ruby
n, m = gets.split.map(&:to_i)
ary = readlines(chomp: true).map{
AWS LambdaをRubyのコンテナで動かしてみる
AWS Lambdaをコンテナで動かしてみました。言語は特に理由はないのですがRubyで試しました。
手順
1. ソースコード
2. Lambda作成
3. Lambda実行
4. ソースコード更新# ソースコード準備
ファイルは以下の3つを用意します。
`app.rb`
“`app.rb
module LambdaFunction
class Handler
def self.process(event:,context:)
p “Hello from Ruby 2.7 container image!”
p event
end
end
end
“``Dockerfile`
“`Dockerfile
FROM public.ecr.aws/lambda/ruby:2.7# Copy function code
COPY app.rb ${LAMBDA_TASK_ROOT}# Copy dependency management file
COPY Gemfile ${LAMBDA_TASK_ROOT}
【Rails】「教材シェア」アプリを作成しました
## 1.はじめに
閲覧していただきありがとうございます。
今回作成したアプリの経緯や開発の苦悩などをまとめました。
よろしければ、ご覧ください。
## 2.関連URL
アプリ:https://teaching-materials-app.herokuapp.com/
Github:https://github.com/suugakusan/teaching_materials_app
## 3.アプリ概要
教員同士で教材をシェアし、生徒と向き合う時間を確保することをテーマにしたアプリです。* 教材のデータを作成・編集・削除機能
* フォロー機能
* 投稿への「お気に入り」機能実装し「お気に入り」したものは一覧で閲覧可能
* 投稿のタイトル(内容)で検索機能(教科名も可)## 4.アプリの制作背景
私が教員として働く中で、生徒と向き合う時間が十分に取れないほど、数多くの仕事で溢れていました。本来であれば、教材研究する時間を確保し、生徒に実りある学習を提供しなければいけません。 しかし、それ以外の業務に時間をかけており、教材研究が全くできないのが今の現状です。同僚も同じように、
[Rails]基本理念について
# はじめに
本記事では、railsの基本理念について、まとめてみました。# 基本理念
## DRY
railsでコードを書く時には、
同じ情報を繰り返し記述することは、コード的にも、見る人にも良くはありません。`DRY`とは、`Don’t Repeat Yourselfの略`
`同じ情報を繰り返し記述しない`というものです。`スマブラのドンキーコング`を想像してください。
(ちょっと強引ですので、ご容赦)`DRYを意識していない`ドンキーコング
“`
ジャブ = ドンキーのAボタン
パンチを溜める = ドンキーのBボタン
ジャンプする = ドンキーのYボタン– 「ドンキー」を修正する場合、3箇所もあるので、工数がかかる
– 一つだけ「ドンキー」のまま未修正に気づかなかった場合のリスク有
“``DRYを意識した`ドンキーコング
“`
fighter = ドンキー
ジャブ = fighter の Aボタン
パンチを溜める = fighter の Bボタン
ジャンプする = fighter の Yボタン– 変更点が1つだけなので、修正工数が少ない
RubyとPythonの基本構文の違いをまとめ
業務でPythonを使っていますが、ひょんなことからRubyを学ぶ機会が出来たのでPythonとの基本的な構文の違いをまとめています。
Rubyは初心者なので、変なことを書いていたらご指摘ください。
似ている所も多いので、業務と趣味で使っていたら混乱しそうだ…# RubyとPythonの違うところ
## メソッド呼び出し
メソッド呼び出し時、Rubyでは以下の呼び出し方法が可能です。__Ruby__
– オブジェクト.メソッド(引数,引数,引数)
– オブジェクト.メソッド 引数,引数,引数
– 引数が無い場合: オブジェクト.メソッドコードをPythonと比べてみましょう。
__Ruby__
“`ruby:hello.rb
def func_1(a, b)
puts(a + b)
endtext_1 = ‘Hello ‘
text_2 = ‘Ruby’
func_1(text_1, text_2) # -> Hello Ruby
func_1 text_1, text_2 # -> Hello Rubydef func_2()
puts(
railsチュートリアル第6章 ユーザーオブジェクトを検索する
###ユーザーオブジェクトを検索する
Active Recordには、オブジェクトを検索するための方法がいくつもあります
過去に作成した最初のユーザーを探してみましょう。
3番目のユーザー(foo)が削除されていることを確認しましょう。まずは存在するユーザーから探してみましょう。“`rb
>> User.find(1)
User Load (0.2ms) SELECT “users”.* FROM “users” WHERE “users”.”id” = ? LIMIT ? [[“id”, 1], [“LIMIT”, 1]]
=> #
>> User.create(name: “A Nother”, email: “another@example.org”)
(0.1ms) begin transa
「1 – 20 / 35件 < >」のような日本語ページネーションの追加[Rails, kaminari]
## はじめに
以下のようなページネーションを作成しました。
実現したコードを記載したいと思います。![スクリーンショット 2021-09-24 17.34.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779676/e9242459-7e07-52f7-80dc-b8ed9e46e2f9.png)
## コード
“`html:app/views/tests.html.erb
<%= page_entries_info @tests %>
<% if @tests.total_count > @tests.limit_value %>
<%= link_to '<', path_to_prev_page(@tests) %>
<%= link_to '>‘, path_to_next_page(@tests) %>
<% end %>
“`“`ruby:app/controllers/test_controller.rb
def index
@tests = Tes
本番環境で背景画像を表示
#課題
ローカル環境で表示できていた、背景画像が本番環境では表示されなくなった。調べてみたところ、アセットパイプラインにおいてエラーが発生していると分かった。備忘録として記録。
#行なったこと
####1.画像配置場所の変更
変更前:`app/assets/images/back.png`
変更後:`public/images/back.png`
####2.image-url( ) の利用
`css`を`scss`に変更し、`url(“back.png”)`を`image-url(“back.png”)`に変更。“`index.scss
.main{
background-image: image-url(“back.png”);
}
“`
####3.本番環境でアセットパイプラインが自動で通るように設定を変更
変更前↓“`config/environments/production.rb
config.assets.compile = false
“`変更後↓
“`config/environments/production.rb
config.asse
【Ruby on Rails】Captureメソッドを使ってテンプレート化をする方法
#対象者
* captureメソッドを使用したことない人
* テンプレート化を簡単に実行したい人#目的
* captureメソッドを使用することで簡単にテンプレートを作成する
#実際の手順と実例
###1.captureメソッドとは> captureメソッドを使用することで、テンプレートの一部を変数に保存することができます。保存された変数は、テンプレートやレイアウトのどんな場所でも自由に使用できます。
※Railsガイド参照使ってみると使いまわしたい文章や表を簡単にテンプレート化できるなと考えて、使ってみました。
###2.メソッドの使い方
““index.html.erb
<% @greeting = capture do %>ようこそ!日付と時刻は<%= Time.now %>です
<% end %>
““この時点では、ページに表示されません。
あとは<%= @greeting %>を自分の好きな箇所に設置すればOKです!#参考にさせて頂いた記事
* [Railsガイド 6.5 CaptureHelper](htt
破壊的メソッドと非破壊的メソッドの違い
破壊的メソッドと非破壊的メソッドの違いをちゃんと理解していなかったためmemoしておく。
## 非破壊的メソッドとは
“`
gorira = “kojiro”
puts gorira.upcase
puts gorira
“`“`
#=>KOJIRO
kojiro
“`
レシーバーである、gorira自体の値はそのままkojiroという小文字のままで保持される。## 破壊的メソッドとは
それに対して破壊的メソッドはこんな感じ。“`
gorira = “kojiro”
puts gorira.upcase!
puts gorira
“`“`
#=>KOJIRO
KOJIRO
“`レシーバーである、gorira自体の値もKOJIROという大文字に変更してしまうことができる。
こんな感じ。
[Ruby] AtCoder過去問 B – Increment Decrement
##はじめに
AtCoder過去問B問題をRubyで解いてみました。
よろしくお願いします。問題はこちらから確認してください↓
https://atcoder.jp/contests/abc052/tasks/abc052_b
##B – Increment Decrement
まず入力を受け取ります。
“`ruby
n = gets.to_i
s = gets.chars
“`2行目は文字列を一つずつ区切って、配列にしています。
入力例1でいえば、“`IIDID“`を“`[“I”, “I”, “D”, “I”, “D”]“`という配列で受け取っています。次にxを用意して、一回一回のxの結果を記録していく配列x_aryを用意します。この配列には0(xの初期値)を代入しておきます。
“`ruby
n = gets.to_i
s = gets.charsx = 0
x_ary = [0]
“`準備は完了したので、配列sをeach文で回してIだったら+1、Dだったら-1という作業を行い、それぞれの結果のxの値をx_aryに記録(追加)していきます
Ruby と Rails のバージョン表
##自分用にRailsとRubyの対応用表まとめてみたよ
|RailsVersion|必須Ruby|推奨Ruby|RubyGem|
|—|—|—|—|
|6.2.0|>= 2.5.0|3.0.x|>= 1.8.11|
|6.1.x|>= 2.5.0|3.0.x|>= 1.8.11|
|6.0.x|>= 2.5.0|2.6.x|>= 1.8.11|
||< 3.0.0||| |5.2.x|>= 2.2.2|2.5.x|>= 1.8.11|
||< 2.6.0||| |5.1.x|>= 2.2.2|2.5.x|>= 1.8.11|
||< 2.6.0||| |5.0.x|>= 2.2.2< 2.5.0|2.4.x|>= 1.8.11|
|4.2.x|>= 1.9.3|2.2|>= 1.8.11|
|4.1.x to 4.2.0|>= 1.9.3|2.1|>= 1.8.11|
|4.0.5 to 4.1.0.rc2|>= 1.9.3||>= 1.8.11|
|4.0.0 to 4.0.x|>= 1.8.7||>= 1.8.11|
|3.2.x|1.8.7|2.2|>
【Rails】非同期によるDMチャット機能の実装【細かく噛み砕いて解説】
# 前提条件
・Rubyバージョン2.6.5
・Railsバージョン6.0.0
・jQueryを導入済み→未導入の方は、自分が書いた[こちらの記事](https://qiita.com/RIN_HM/items/bdbd76f5015b3c15bfe9)をご参照ください。
・gem ‘devise’によるユーザー管理機能を作成済み。・チャットページへの遷移元となるユーザー詳細ページを作成済み。
“`app/views/users/show.html.erb
<% if current_user.id != @user.id %>
<%= link_to "#{@user.name}さんとチャットする", chat_path(@user.id) %>
<% end %>
“`# この記事の構成
①チャットに必要なモデルの作成
②各モデルへのアソシエーション及びバリデーション設定
③ルーティング設定
④cahtsコントローラーの作成と記述
⑤チャットをするビューの作成
⑥非同期処理に必要な`~.js.erb`ファイルの作成
⑦エラーメッセージを表示するファイルの作成#