- 1. ローカル 環境開発 Ruby on Railsの環境構築方法
- 2. [Ruby]irbが動作しなくなったお話。[エラー]
- 3. Rspecを動かすまでまとめ(簡易版: 単体・統合テスト)
- 4. if文なしでじゃんけん
- 5. 【 Ruby on Rails 6.0 】 AWS + Nginx + Unicornでデプロイ⑦
- 6. アセットパイプラインに関わる画像が表示されないエラー
- 7. AWSのEC2でデプロイ後、背景画像が本番環境で反映されない・・・
- 8. 【Rails】 初心者向け!gem ‘dotenv-rails’の使い方
- 9. Couldn’t find User without an ID エラーを解決した
- 10. Rails「paramsの使用法」
- 11. MacbookにRuby導入
- 12. アプリケーションの機能を外部にも使えるようにする場合は Facadeパターンを使う
- 13. *.js.erbファイルは読み込めているのに表示されないときの対処方法
- 14. 計算量について意識してプログラムを書くための第一歩
- 15. 初めてのRuby On Rails その1
- 16. RailsのSQLインジェクション対策まとめ
- 17. 【rails】モデルに定義するメソッドのselfについて
- 18. Railsアプリの標準言語を日本語に設定する
- 19. [memo]Heroku利用方法
- 20. 学び直し Rubyがミニツク Part9
ローカル 環境開発 Ruby on Railsの環境構築方法
#はじめに
ローカル環境でRailsの環境構築ができるようになり、http\://localhost:3000/で以下の表示がされるとゴールです。
初めて、ローカル環境で構築しましたので、その方法を記載します。
#到達点
以下の1点を達成する
・http\://localhost:3000/ で上記の図を表示する#仕様
初期仕様
・mac
・Ruby(2.6.3)今回インストールするバージョン
・Ruby on Rails (6.1.1)
・MySQL (8.0.23)
・Homebrew (2.7.6)##流れ
① Homebrewインストール
② bundlerインストール
③ MySQLインストール
④ railsインストー
[Ruby]irbが動作しなくなったお話。[エラー]
先日、irbを起動させようと思ったら、、、
“`shell
~ $ irb
/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv-exec: /Users/inouesyo/.rbenv/versions/2.6.6/bin/irb: /Users/inoueshou/.rbenv/versions/2.6.6/bin/ruby: bad interpreter: No such file or directory
/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv-exec: line 47: /Users/inouesyo/.rbenv/versions/2.6.6/bin/irb: Undefined error: 0
“`という表示が出て起動できず。
エラーを読むに原因は恐らく、以前にホームディレクトリの名前を変更したのでそれが原因でパスが通ってないのかな?と推測。と言うことで、user/Users/inouesyo/.rbenv/versions/2.6.6/bin/irb:のirbファイルを
Rspecを動かすまでまとめ(簡易版: 単体・統合テスト)
今回はテスト内容などにはあまり触れていません
Rspecを使ってテストするまでをまとめています。“`ruby:Gemfile
group :test do
gem ‘capybara’
gem ‘rspec-rails’
gem “factory_bot_rails”
gem ‘faker’
end
“`group :test do 〜 endの中を変更し、bundle install します。
“` :ターミナル
$ bundle install
$ rails g rspec:install
“`“`ruby:spec/rails_helper.rb
#最後の方に追加する
config.include FactoryBot::Syntax::Methods
end
“`
記述することでletを使用した際に、FactoryBotが使用できるようになります。“`ruby:factories/item.spec.rb
FactoryBot.define do
factory :”モデル名” do
“カラム名” { Fak
if文なしでじゃんけん
[if文なしでじゃんけん](https://qiita.com/tadsan/items/65d91ba6b50535fc8815)に触発されました
#プログラム
“`janken.rb
HANDS = [“✊”, “✌️”, “?”]
RESULTS = [“あいこ”, “かち”, “まけ”]
me = gets.chomp
enemy = gets.chomp
p RESULTS[(HANDS.index(me) – HANDS.index(enemy)).abs]
“`
【 Ruby on Rails 6.0 】 AWS + Nginx + Unicornでデプロイ⑦
# 始めに
前回の内容でNginxというWebサーバーを導入しRailsアプリを本番環境で起動出来ました。
しかし、現状だと開発環境で変更したものを本番環境に反映させるのに工数が多く不便です。
そこで、`Capistrano`という自動デプロイツールを導入しコマンドひとつでデプロイ作業を完了できるように設定していきます。# 目次
|目次|内容|
|:–:|:–:|
|セクション1|[EC2インスタンス作成](https://qiita.com/anago1030/items/854252bc9b728fe90beb)|
|セクション2|[Linuxサーバー構築](https://qiita.com/anago1030/items/07f7026c0f4c42a63440)|
|セクション3|[データベース設定](https://qiita.com/anago1030/items/79eebdc8474255b962b4)|
|セクション4|[EC2上でGemをインストールし環境変数を設定](https://qiita.com/anago1030/items/0a9a89374
アセットパイプラインに関わる画像が表示されないエラー
# 今回のエラー
制作環境は– Ruby on Rails
– unicorn
– AWS EC2
– NginxNginxを導入して設定をした後から、本番環境でトップページに表示される予定の画像が表示されない状態になっていた。
ログイン画面のアニメーションとして用意してあった音声ファイルが読みこまれていない。
一部では表示されている画像もあった。# 原因
アセットパイプラインの参照先の記述に問題があった。
### 問題箇所
今回の不具合箇所は2点– トップページの画像の記述
“`<%= image_tag("/assets/title_logo.png", class: "header-logo" ) %>“`– ログイン画面の音声ファイル
“`<%= audio_tag("/assets/submit", autoplay: false, controls: true, id:"audio_sub") %>“`#対処
行ったことは
1. 参照先URLを修正
2. git hubに修正をpush
3. 本番環境でプリコ
AWSのEC2でデプロイ後、背景画像が本番環境で反映されない・・・
#初めに
今回初投稿になります。
私は現在プログラミング学習を始めて約4ヶ月一通り簡単なポートフォリオは作成できる技術はついてきましたが、まだまだ初学者でエラーで止まることが多いため、振り返り学習を兼ねてエラーで詰まったことや日々の学習での気付きをその都度投稿します。**今回EC2でのデプロイ時、ローカル環境で反映されていたポートフォリオの背景画像が本番環境で反映されないエラー解決に苦戦したので私が行った解決方法をまとめておきます。**
#今回の問題について
Rubyをベースにポートフォリオを作成して、AWSのEC2を利用し設定して本番環境にデプロイを試みたところ、ブラウザー上で作成したポートフォリオの背景画像のみうまく表示されず、背景がまっさらの状態に・・・・同じimagesディレクトリ内に一緒に置いているロゴの画像は反映されているので、EC2の設定のせいで画像の読み込みが出来ていないということはない様子。
アプリ自体の他の機能も問題ない状態でした。アプリケーションサーバーはUnicorn
WEBサーバーはNginxを使用しています。#考えられる要因
1.背景画像の
【Rails】 初心者向け!gem ‘dotenv-rails’の使い方
はじめに
—
最近当たり前のように使用している’dotenv-rails’のgemと環境変数という言葉ですが、使い始めた頃は何が何だかよく分からなかった覚えがあります。そんな自分自身の復習と、同じような初心者の方の参考になればと思い、なるべく一つ一つ丁寧に、また画像なども掲載しつつ投稿させていただいております。
dotenv-railsとは
—
環境変数を管理することができるgemです。
自身で作成したアプリケーションの直下に.envファイルを作成することで、パスワードなどネット上に公開させたくない情報を扱い、自動で読み込むことが可能です。
環境変数とは
—
参考書やネットで当たり前に出てくる「環境変数」という言葉。
私は当初この言葉の意味すら分かりませんでしたので、説明を掲載しておきます。
簡単に言うと、ネット上に公開させたくない情報を入れておく箱になります。この箱自体には、自身で任意の名前をつけることが可能です。つまり、ネット上に公開させたくない情報は、一度この環境変数という箱の中に入れ、コード上で使用することで、情報漏洩を防ぐことができます。
Couldn’t find User without an ID エラーを解決した
rails初学者です。
現在オリジナルアプリを開発しております。
ユーザー詳細機能を実装しようとして、ユーザー詳細画面へのリンクを設定し、動作確認してみたら
「Couldn’t find User without an ID」
というエラーが発生したため、エラー解決をしました。## 環境
ruby ‘2.6.5’
rails ‘6.0.0’## ビュー
“`ruby
<%= link_to "#{current_user.name}", user_path(current_user) %>
“`このように、ログイン中のユーザーの名前を表示し、名前にユーザー詳細ページへ飛ぶリンクを設定しました。
## Usersコントローラー
“`ruby
def show
@user = User.find(params[:id])
end
“`
Usersコントローラーのshowアクションで、パラメータのidを受け取って
そのidに合致するユーザーを@userに格納しました。## 挙動確認
予想される挙動は、**「ユーザー名をクリックするとユーザー詳細ページに遷
Rails「paramsの使用法」
#はじめに
今回、テキストの一覧ページを作成する際、link_toとhelperよりparamsの使用方法を復習できたので共有します。#やりたいこと
・viewで各教材の一覧ページへのリンクを設定する
・controllerで各教材の一覧ページに適した教材を取得する
・helperで一覧ページのタイトルを表示する処理を書く#viewで各教材の一覧ページへのリンクを設定する
“`_header.html.erb
<%= link_to "Ruby/Rails教材", texts_path, class: "dropdown-item" %>
<%= link_to "AWS講座", texts_path(genre: "AWS"), class: "dropdown-item" %>
<%= link_to "PHPテキスト教材", texts_path(genre: "Php"), class: "dropdown-item" %>
“`
<%= link_to "表示名",次のアクションへ遷移するパス(パラメーター),class: "クラス名" %>
となるよう記述し
MacbookにRuby導入
# 環境
MacOS:Catalina
`MacbookPro`初期の状態から`Ruby`、`Rails`、`MySQL`をインストールします。手順は以下です。
・Zshをデフォルトに
・Command line tools導入
・Homebrew導入
・Rubyインストール
・MySQLを導入
・Railsを導入
・Node.jsの導入
・yarnの導入# Zshをデフォルトに
“`
# zshをデフォルトに設定
% chsh -s /bin/zsh# ログインシェルを表示
% echo $SHELL
# 以下のように表示されれば成功
/bin/zsh
“`
パスワード求められたらPCのパスワードを入力します。# Command line tools導入
以下をターミナルで“`
% xcode-select –install
“`
インストールをクリックして進める。# Homebrew導入
Homebrewというソフトウェア管理ツールを導入します。
以下をターミナルで。“`
% cd # ホームディレクトリに移動
% pwd #
アプリケーションの機能を外部にも使えるようにする場合は Facadeパターンを使う
業務で主に Ruby On Rails での開発を行っていますが、そこで得た知見や、失敗への対応などについて記します。
今回は「アプリケーションの機能を外部にも使えるようにする場合」の実装についてです。
## 状況
コンテンツ管理の都合上、弊社では「コンテンツを記載したHTMLを開発者以外が作成するが、その中の動的な部分に ERB 形式でコード埋め込んでいる」場合が有ります。
それによって、そのページの動的な部分の出し分けを行えるようになっている、という仕組みです。
しかし、そのコードからは「アプリケーション内のどのメソッドも呼べる」ようになっていたので、以下のような事が生じます。
* 開発の都合上、メソッド名などが変わった場合に、そのコード埋め込み部分でエラーや `DEPRECATED WARNING` が生じる
* そのことを防ぐために、実装時にあらかじめ「組み込まれているコンテンツの中身」もチェックする、という作業が生じるこれらの幾つかの面は「運用方法の改善」での対処が考えられますが、そもそも論として
> そのコードからは「アプリケーション内のどのメソッドも呼べ
*.js.erbファイルは読み込めているのに表示されないときの対処方法
– 「Completed 200 OK」となっているのに*.js.erbに書いたjavascriptのコードが動かないとき。
– javascriptのエラーも発生していないとき。## 原因
https://github.com/rails/rails/issues/33115
どうやらrails-ujsが求めているContent-Typeが一致しないことが原因っぽいです。## 対策
### 【対策1】レイアウトファイル名を変更する`views/layouts/*.erb`
↓
`views/layouts/*.html.erb`###【対策2】render時に`layout: false`を指定する
“`ruby:*_controller.rb
def create
@sending_user = User.find(current_user.id)
@receiving_user = User.find(params[:user_id])
new_like_balance = @sending_user.like_balance – 1
計算量について意識してプログラムを書くための第一歩
#はじめに
プログラミングをやり始めてから間もなく1年になりますが、基本的な知識である計算量について気にすることがほとんどなかったことが発覚したので、しっかり勉強しようと思いました。
at_coderの問題を例に計算量を意識しない書き方と意識した書き方での性能比較を行います。
計算量意識するの大事だなという実感を持ってもらえたら嬉しいです。#計算量を意識していないコード
下記の問いに答えるように実装していきました。
まずは、特に計算量を意識することなく実装していきます。>正の整数Kが与えられます。正の整数の 3つ組 (A,B,C)であって、ABC≤Kなるものの個数を求めてください。 ただし、A,B,Cの順番が異なるだけの組も異なる組として数えます。
###サンプルコード1(自分が元々書いていたもの)
実装方針は下記です。
A,B,Cのそれぞれの変数に対して、1からKまでの数を順次代入していき、それぞれの場合のAとBとCの積がK以下の場合の数をカウントしました。“`ruby
n = gets.chomp!.to_i
count = 0n.times do |i|
初めてのRuby On Rails その1
# Ruby On Railsとは
>オープンソースのWebアプリケーションフレームワークである。RoRまたは単にRailsと呼ばれる。その名にも示されているようにRubyで書かれている。またModel View Controller(MVC)アーキテクチャに基づいて構築されている。
[Ruby_on_Rails – Wikipedia](https://ja.wikipedia.org/wiki/Ruby_on_Rails)初めてRubyに触れるので、Progateを使って学習してみました。忘れそうなことや頭を整理するために、記載しています。
[Ruby on Rails5 – Progate](https://prog-8.com/languages/rails5)## Railsアプリケーションの作成
以下コマンドにより必要なファルダ等が作成される“`terminal:ターミナル
rails new app_name
“`
### ツリー構造
app_name/
├ app/
├ config/
├ db/
└ その他##
RailsのSQLインジェクション対策まとめ
## find、find_by
普通に使っている分にはSQLインジェクションは発生しないのであまり気にする必要なし。(参考)
[ActiveRecord::Base#find is SQL injection free? – Rails – Ruby-Forum](https://www.ruby-forum.com/t/activerecord-base-find-is-sql-injection-free/136784)## シンプルなwhere句
“`rb
# NG
User.where(“name=’#{params[:name]}'”)
# OK
User.where(name: params[:name])
User.where(“name = ?”, params[:name])
“`## 複数条件で検索
“`rb
# NG
User.where(“name = #{params[:name]} or age < #{params[:age]}") # OK User.where("name = ? or age < ?", params[:name
【rails】モデルに定義するメソッドのselfについて
モデルにメソッドを書く際に、”self.メソッド名”と書くことがあるかと思います。
まだ完全には理解できていませんが、わかった内容を記事にまとめます。#モデル
“`ruby:cook.rb
class Cook < ApplicationRecord def self.ranks Cook.find(Like.group(:cook_id).order(Arel.sql('count(cook_id) desc')).limit(9).pluck(:cook_id)) end end ``` とある記事を参考にして、いいねのランキング機能を実装しました。 ですが、このコード省略は以下のように省略できます。 ```ruby:cook.rb class Cook < ApplicationRecord def self.ranks find(Like.group(:cook_id).order(Arel.sql('count(cook_id) desc')).limit(9).pluck(:cook_id)) end end ``` 何が変わったのか
Railsアプリの標準言語を日本語に設定する
# 環境
macOS Big Sur Ver11.2.1
Rails6.0.0
Ruby2.6.5# 目的
Railsで開発中のアプリケーションの標準言語を日本語に変更すること。
これにより、エラーメッセージが日本語表示されること。
※今回のアプリではdeviseを導入しているので、deviseによるデフォルトのメッセージも日本語化します!# 手順
### ①アプリケーション自体の言語設定を日本語にする
以下の一文を追加“`ruby:config/application.rb
require_relative ‘boot’require ‘rails/all’
Bundler.require(*Rails.groups)
module アプリ名
class Application < Rails::Application config.load_defaults 6.0 # 日本語の言語設定を追記する config.i18n.default_locale = :ja end end ``` ### ②必要なGemのインストー
[memo]Heroku利用方法
Herokuを使ってアプリケーションをデプロイする方法をまとめます。
[手順]
●はじめてデプロイをする場合
・Herokuにアカウント登録する
・Heroku CLIをインストールする
・masterブランチへcommitする
・Heroku上にアプリケーションを作成する
・MySQLを使用できるように設定する
・master.keyを環境変数として設定する
・Herokuへアプリケーションの情報をpushする
・Heroku上でマイグレーションを実行する●デプロイ済みのアプリケーションに変更修正を加えた場合
・変更修正をcommitする
・ブランチを作成していた場合は、masterブランチへマージする
・Heroku上にpushする
(テーブルに変更を加えた場合は)Heroku上でマイグレーションを実行する##Herokuの導入
###Heroku CLIをインストール
“`
# ターミナル
% brew tap heroku/brew && brew install heroku# 完了確認コマンド
% heroku –version# バージョンが出力
学び直し Rubyがミニツク Part9
今日の教科書
[モジュール](http://www.minituku.net/courses/566428009/contents/720335719.html)#モジュール
モジュールは手続きの部分だけのまとめ。
moduleでモジュールを定義。“`
module <モジュール名>
<モジュールの定義>
end
“`“`
module Foo
def foo
puts(“module foo”)
end
end
“`クラスとモジュールの違いは
– モジュールはインスタンスを作ることができない
– モジュールは継承ができない> クラスは継承をおこなうことでスーパークラスから機能を渡せました。
しかし、クラスの継承ではスーパークラスがひとつしか指定できません。
そのため、複数のスーパークラスを継承して新しいサブクラスを作れません。そのようなクラスに異なる機能を渡したい時にRubyではモジュールを使います。このさまざまな機能を混ぜ合わせるやり方のことをMix-inと呼びます。#include
モジュールに含まれているメソッドや定数を