- 0.1. 【爆速】RailsとDockerで環境構築〜立ち上げまで
- 0.2. RSpecとSimpleCovでテストカバレッジを見るには
- 0.3. Virtualbox + Vagrant における共用ディスク構成
- 0.4. 大学掲示板アプリの開発
- 0.5. 【Rails】Twitterクローンを作ってみた〜ツイート機能編〜
- 0.6. 【Ruby】配列の合計値の取得方法まとめ
- 0.7. 本番環境でToken can’t be blank とでる
- 0.8. dotenvで環境変数をセットするには
- 0.9. Rails&Docker&Reactの個人用メモ
- 0.10. jsonファイルを抽出する
- 0.11. Rails7 + TailwindCSS + daisyUIの導入で詰まった時の解決手段
- 0.12. rails generate コマンドを簡単に組み立てられるサービスをリリースしました【個人開発】
- 0.13. ruby.wasm で遊ぶ ~Web Workerを使ってバックグラウンドで動かすまで
- 0.14. paizaに挑戦して気づいた課題
- 0.15. [Rails] フォローとフォロワーを表示させる方法
- 1. フォロー数:
- 2. フォロワー数:
【爆速】RailsとDockerで環境構築〜立ち上げまで
今回は、RailsとDockerの環境構築をして簡単なアプリケーション作成までざっくりとまとめてみました。
この記事にした経緯として、これまでは、主にRuby on Rails(以下 Rails)を使った社内のシステムや副業で運営していたサブスク型のサービス開発をしていたのですが、ここ1年以上Railsを触る機会がなかったので、改めて触ってみようというところです。
みなさんにも、これからRubyやRailsに興味を持って頂き、始めやすいように、簡単に紹介・解説していきたいと思います。
では早速、本題に入りましょう!
## 今回の記事内容
1. そもそもRubyとは?
2. RubyとRuby on Railsの違いと開発事例
3. Dockerとは?
4. RailsとDockerの環境構築
5. 簡単なアプリケーションの作成## ①Rubyとは
![ruby.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949803/864e5d90-40a4-a528-a7b7-982eeb6b
RSpecとSimpleCovでテストカバレッジを見るには
## はじめに
RSpec入門中に、単純なRubyプログラムをRSpecとSimpleCovでカバレッジを見たくて調べた結果をまとめておきます。環境は
Ruby 2.7.0
RSpec 3.11
SimpleCov 0.21.2## アプリケーションコードとテストコード
この2つのコードは同じディレクトリにあると仮定します。
“`ruby:foo.rb
class Foo
def initialize(v)
@v = v
enddef bar
@v == 0 ? 1 : 2
end
end
“`
特に意味のないサンプルコードです。“`ruby:foo_spec.rb
require “simplecov”
SimpleCov.start do
enable_coverage :branch # branch coverageを有効に
endrequire_relative “foo”
RSpec.describe Foo do
describe “#bar” do
it “0なら1を返しそれ以外なら2を返す”
Virtualbox + Vagrant における共用ディスク構成
Db2 11.5.8 がLinux 環境において Pacemaker による共用ディスク構成をサポートした。
その挙動を確認する為に、Virtualbox上に共用ディスク構成を用意したが、その際に引っかかった箇所の備忘。# 目的
Virtualbox + Vagrant 環境で、共用ディスク構成をデプロイする# 環境
– Fedora Linux 36 (Workstation Edition)
– Vagrant 2.3.1
– VirtualBox 6.1.40# Vagrantfile例
“`ruby:Vagrantfile
file_shared_disk = ‘sdisk.vdi’
size_shared_disk = 1Vagrant.configure(‘2’) do |config|
%w(node1 noder1540482).each do |_node|
config.vm.define _node do |ins|
ins.vm.box = ‘fedora/36-cloud-base’
ins.vm.box
大学掲示板アプリの開発
Railsで大学掲示板アプリのポートフォリオを作成しました。
![スクリーンショット 2022-10-31 17.24.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569989/7e729aee-62d9-79dc-65bd-a274625db5ed.png)
サンプルログイン
改善点
ID usasa2121121
PASS samplesamplegithub
https://github.com/takoyan33/hokuseikeiziban## 目的
背景や目的としては、自分が通っている大学の掲示板サイトがあれば、学生同士で講義や大学について情報共有ができ、便利だと感じたからです。
## 使用言語
・フロントエンド:Ruby on Rails, Ruby
・バックエンド:MySQL
・コンテナ:Docker
・デプロイ:Heroku## 作った機能
### 記事投稿機能![スクリーンショット 2022-10-31 17.25.06.png](https:/
【Rails】Twitterクローンを作ってみた〜ツイート機能編〜
## はじめに
[【Rails】Twitterクローンを作ってみた 〜ユーザー詳細ページの作成〜](https://qiita.com/bloom__fu/items/8cb6002c44d7eb998358)の続きです。こちらを前提に進めていきますので、まだご覧になっていない方はそちらからご覧ください!※こちらはdockerでの環境構築を省きます。
## サービス環境
– ruby 3.0.0
– Rails 6.0.4
– docker
– mysql 8.0.2
– Slim, SCSS## ツイート機能作成
#### 条件
– 「つぶやく」ボタンクリックで新規ツイート作成ページに遷移
– テキストを入力し投稿することでトップページにツイートが表示される。
Tweetモデルの作成をし、UserモデルとTweetモデルを関連付けさせてください。Tweetは最大140文字までとします。また、Tweetモデルのテキスト部分のカラム名はtextとしてください。
#### 実装流れ(簡略)
① Userモデルに紐付けたTweetモデル作成(textカラムを持つ)
② db:migrat
【Ruby】配列の合計値の取得方法まとめ
合計値の取得方法がいまいち整理できていなかったので、わかっている範囲で整理します。
# 想定読者
– Ruby初心者
# 配列の合計値の取得方法まとめ
合計値を取得する方法には下記のようなものがあります。
– sumメソッド
– injectメソッド
– forループ
– eachループではそれぞれの使い方を整理します。
# sumメソッド
sumメソッドは配列内の値を合計してくれます。
“`ruby
array = [1,2,3,4,5,6,7,8,9,10]
total = array.sum
puts total #=>55
“`こんな感じですね。もし、配列内の文字列の値を、数値で合計したい場合は要素を加工するようにしましょう。
“`ruby
array = [“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”10”]
total = array.sum{|array| array.to_i}
puts total #=>55
“`# injectメソッド
injectメソッドもsumメソッドと同じように呼び出した配
本番環境でToken can’t be blank とでる
Railsでフリマアプリ作成の際、本番環境でToken can’t be blank とでた。
ローカルではうまくいったのに・・・
以下試したこと・公開鍵と秘密鍵が環境変数に正しく設定されているか確認した
ターミナルにて
“`terminal
vim ~/.zshrc
“`
を使って確認
・JavaScriptの方で環境変数を呼び込む記述を確認した
“`ruby
Payjp.setPublicKey(process.env.PAYJP_PUBLIC_KEY);
“`
・heroku logs –tail をつかって中身をみると、
“`terminal
2022-10-31T04:18:04.579549+00:00 heroku[web.1]: Idling
2022-10-31T04:18:04.589889+00:00 heroku[web.1]: State changed from up to down
2022-10-31T04:18:05.370935+00:00 heroku[web.1]: Stopping all proces
dotenvで環境変数をセットするには
## 環境
Ruby2.6
Rails5.2
Ubuntu20.4## はじめに
RDBに接続する時のユーザーIDとパスワードは、database.ymlで設定します。しかし、database.ymlで設定すれば、GitHubに上げた時に、誰でも閲覧可能な状態にさらしてしまうことになります。これはセキュリティ上よくありません。それを防ぐためには、database.ymlをGitHubに上げなけばいいだけの話ではありますが、database.ymlには、ユーザーIDとパスワードの他にも、RDBの接続に関する重要な情報が含まれており、開発環境を再構築するためには、GitHubには置いておかなくてはいけないファイルになります。そこでよく使われる方法が、ユーザーIDとパスワードを環境変数に設定して、環境変数のキーをdatabase.ymlに設定する方法です。この方法をとれば、database.ymlをGitHubに上げても、ユーザーIDとパスワードが外部にさらされることはありません。Railsで環境変数を管理ときは、dotenvというgemが一般的に知られています。そこで、dotenvの使
Rails&Docker&Reactの個人用メモ
## Dockerコンテナへの入り方
“`bash
docker-compose exec web bash
“`
今回は`web`になってるところがデータベースの名前。ここを変更して入るコンテナを選ぶ。(`docker-compose.yml`で指定している名前)## テーブル作成
“`bash
rails g model Users
“`
モデル名の最初は大文字
これでマイグレーションファイルが`/db/migate`に作成される。
これを適当に編集。
その後さらにコマンドを実行。
“`bash
rails db:migrate
“`
これで多分いける。その後、実際にできてるかはdbに入って確認するか、dbのスキーマのバージョン確認すればいいと思う。## スキーマのバージョン確認
“`bash
rails db:version
“`## dbに接続してテーブルの中身がどうなってるかの確認
~~~bash
$ docker-compose exec db bash
bash-4.2# mysql -u root -p
Enter password:(こ
jsonファイルを抽出する
“`rb
res.read_body.to_json
=> “\”{\\\”publishingOffice\\\”:\\\”青森地方気象台\\\”,\\\”reportDatetime\\\”:\\\”2022-10-30T10:31:00+09:00\\\”,\\\”targetArea\\\”:\\\”青森県\\\”,\\\”headlineText\\\”:\\\”\\\”,\\\”text\\\”:\\\”北日本は気圧の谷となっています。一方、中国東北区に高気圧があって、本州付近に張り出しています。\\\\n\\\\n青森県は、曇りや晴れで、雨の降っている所があります。\\\\n\\\\n30日は、気圧の谷や寒気の影響により、曇りや晴れで、雨や雷雨の所があるでしょう。\\\\n\\\\n31日は、高気圧に覆われるため、晴れや曇りの見込みです。\\\\n\\\\n<天気変化等の留意点>\\\\n30日は、津軽では、落雷や突風に注意してください。\\\”}\””
“`
ここまではよかった。
でもここから抽出できると思ったが、ここからできなかった。https://docs.
Rails7 + TailwindCSS + daisyUIの導入で詰まった時の解決手段
## 概要
`Rails7` + `TailwindCSS` の構成でアプリケーションを作成し、 `daisyUI` を導入したが表示がうまくいかずに詰まった。## 結論
**npm** で `daisyUI` をインストールして使用する。## 環境
`Rails7` でアプリケーション作成時に `TailswindCSS` を以下のようにして導入
“`bash
$ rails new MY_APP –css tailwind
“`
以上のようにアプリ作成を行うと、Gemfileに `gem tailwindcss-rails` が追加され、このgemによって導入される。## daisyUIの導入
失敗したケースと成功したケース、未検証のケースをそれぞれ記載する。### 失敗ケース(CDNによる導入)
#### 方法
`application.html.erb`のheader部分に [公式サイト](https://daisyui.com/docs/cdn/)のリンクを追記する。“`erb:application.html.erb
<%= style
rails generate コマンドを簡単に組み立てられるサービスをリリースしました【個人開発】
Rails エンジニアのための開発支援ツール [rails-generate.com](https://rails-generate.com/) をリリースしました。フォームを埋めていくだけで簡単に rails generate コマンドを組み立てることができます。
https://rails-generate.com/
## Model
[rails generate model](https://rails-generate.com/) はこんな感じです。カラム名、型、インデックスの有無や種類を入力すると下部に表示されている rails generate コマンドがリアルタイムで組み立てられていきます。
![model.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39972/92de51bd-5355-cda9-4a87-71cf5714cbfa.gif)
## Controller
[rails generate controller](https://rails-generate.
ruby.wasm で遊ぶ ~Web Workerを使ってバックグラウンドで動かすまで
Ruby 3.2 から WASI ベースの WebAssembly がサポートされるということで、すでに Preview 版も公開されています。
この記事は、正直 WebAssembly とか WASI とかよく分かっていない[^1]人間がブラウザ上で Ruby を色々動かしてみる記事です。とりあえず動けばいいという感じなので、おそらく無駄な記述も多いかと思います。ご了承ください。
[^1]: そもそも JavaScript だってよく分かっていないし、Ruby だって分かっていると言えるか怪しい。
# 作るもの
テキストボックス等に記述された任意の Ruby スクリプトをブラウザ上で動かして、その実行結果を得られるようなもの。
要するに [RubyOnBrowser](https://rubyonbrowser.ongaeshi.me/) とか [TryRuby](https://try.ruby-lang.org/playground/) とかの二番煎じを作りたいのです。
# とりあえず Ruby スクリプトを動かす
[ruby.wasm の github](http
paizaに挑戦して気づいた課題
>どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼
Tweets by takeshi_programおつかれさまです。
今日はpaizaのコーディング課題について挑戦したので、その時の気づきを記事にしました。ちなみに私はpaizaランクCでしたが、本記事の3つの対策をしてBにランクアップできました。是非参考にして頂ければ嬉しいです?
### はじめに
本記事は以下の読者様が対象です。
* paiza Cランカー
* プログラミング初心者
* コーディングが遅いと感じている人### 先に結論
この3つをやるだけでCランカーの頃と比べてコーディングが早くなりました。
* 変数名、関数名を直感的に分かりやすいものにする。
* putsやprintfメソッドで途中経過を書いておく
* arrayの組み込みメソッドについて把握する### 気づいた課題
自分がpaizaのコーディング中に気づいた課題が以下です。
* 組み込みメソッドを調べるの
[Rails] フォローとフォロワーを表示させる方法
# はじめに
この記事は、以下の記事でフォロー機能が出来ている前提で進めています。まだの人は、以下の記事を参考に実装してから、こちらの記事を読んでいただければと思います。
[Railsでフォロー機能を作成する方法【改】](https://qiita.com/shitan1941/items/ab713aa331ce586d1f5f)
それでは実装していきましょう。# 実装
今回は、フォローとフォロワーを表示させるだけなので、すぐに終わります。
users/show.html.erb に以下のコードを追記して下さい。“`ruby:users/show.html.erb
#追記箇所フォロー数:<%= @user.followings.count %>
<% @user.followings.each do |u| %>
【Ruby】日時を任意のフォーマットで出力する
# 概要
Rubyで日時を出力する時の忘備録として記載する。
指定方法により時刻を format 文字列に従って文字列に変換した結果を返します。“`ruby
p t = Time.new(2001,2,3,4,5,6,”+09:00″) # => 2001-02-03 04:05:06 +0900
p t.strftime(“Printed on %m/%d/%Y”) # => “Printed on 02/03/2001”
p t.strftime(“Printed on %m/%-d/%_6Y”) # => “Printed on 02/3/ 2001”
p t.strftime(“at %I:%M%p”) # => “at 04:05AM”
p t.strftime(“at %I:%M%#p”) # => “at 04:05am”
p t.strftime(“%Y%m%d”) # => 20010203 Calend
【解決済】Rubyで配列内のハッシュで同じキーの値を合算(inject、merge)
ポートフォリオ作成中に、「同一のキーを合算して、値を求める」必要があり、実装に時間を要したため、備忘録として投稿します。
## 実現したいこと
“`ruby
data = [
{ water: 9, retort_food: 3, mask: 3 },
{ water: 10, retort_food: 4, mask: 4 },
{ water: 11, retort_food: 5, mask: 5 }
]# 上記のデータで同じキーのものを合算
# data = { water: 30, retort_food: 12, mask: 12 }
“`## 完成形
“`ruby
merge_data = data.inject do |old_data, new_data|
old_data.merge(new_data) do |_key, old_val, new_val|
old_val + new_val
end
end
“`## 使用したメソッド
### inject
– 配列等の要素を一つずつ繰り返して、ブロック内で処理す
【Ruby】rbenvで管理しているRubyのバージョンを変更したいとき
# 概要
Rubyのバージョンをrbenvで管理しているが、プロジェクトによってRubyのバージョンが違うため、切り替え方をメモする。# 実行環境
* MacOS Monterey バージョン12.6# 手順
* rbenvのバージョンを確認
“`
$ rbenv –version
rbenv 1.1.2
“`* rbenvでインストール可能なrubyのバージョンを確認
“`
$ rbenv install –list-all
1.8.5-p52
1.8.5-p113
1.8.5-p114
1.8.5-p115
1.8.5-p231
1.8.6
1.8.6-p36
1.8.6-p110
1.8.6-p111
1.8.6-p114
1.8.6-p230
1.8.6-p286
1.8.6-p287
1.8.6-p368
1.8.6-p369
・
・
・
(以下、省略)
“`* 特定のrubyのバージョンをインストール
“`
$ rbenv install 2.6.5
“`* rbenvの設定バージョンを確認
“`
$ rbenv versions
rubyでHTTPリクエストを行う
天気予報を表示させてみたいので必要になった。
# 参考のサイトでコードが見つかった。
“`rb
require ‘uri’
require ‘net/http’uri = URI(‘https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY’)
res = Net::HTTP.get_response(uri)
puts res.body if res.is_a?(Net::HTTPSuccess)
“`
### 出典
https://www.twilio.com/blog/5-ways-make-http-requests-ruby-jpこれはどういう意味を表しているのか調べてみる。
## URI()とは?
URI を扱うためのモジュールです。https://docs.ruby-lang.org/ja/latest/class/URI.html
### URI(Uniform Resource Identifier)とは?
“`情報やデータといったリソースを識別するための記述方法“`。
人や会社、書籍など、あらゆ
ActionController::Redirecting::UnsafeRedirectErrorへの対処法
# 概要
質問投稿アプリを作っている最中、
投稿に失敗したら質問投稿画面に戻る仕様を実装してる際に、表題のエラーに捕まりました。↓当該コード
“`microposts_controller.rb
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = “Micropost created!”
redirect_to root_url
else
redirect_to ‘microposts/new’
end
end
““# 結論
原因は下から3行目のredirect_to ‘microposts/new’にありました。
エラーを解消する方法は以下の2つです。
**①リクエストを経由する必要がない場合はredirect_toをrenderに置換する**
(そもそもrenderとredirect_toの違いって何だっけ?という方は以下へ)
https://qiita