- 1. DockerでRuby on Rails + Reactを別々にアプリ作成する環境構築手順
- 2. [Rails] Transaction内で条件分岐してrescue
- 3. rails環境構築 gem install sqlite3 エラー
- 4. [Rails]本日のエラー
- 5. 【Rails】2つのテーブルを結合しつつ、欲しいカラムだけを抜き出してJSONで返すサンプルコード
- 6. Dockerでalpineイメージ使用時に発生したstandard_init_linux.go:211: exec user process caused “no such file or directory” を解決
- 7. herokuへデプロイ後、We’re sorry, but something went wrong.
- 8. AWSでのデプロイ手順①ネットワーク環境設定
- 9. railsでdeviseを使う手順
- 10. rails db:migrateでエラー(StandardError: An error has occurred, this and all later migrations canceled:)
- 11. [Rails]ログインidと投稿者が一致した時のみ編集・削除アイコンを表示させる条件式をモデルに書き出す
- 12. 【Rails】ブックマーク(お気に入り)機能
- 13. Linuxサーバからリモートリポジトリにpush & リモートリポジトリからローカルPCにclone
- 14. application_helperを使う
- 15. 【学習まとめ】 Railsアプリケーションのテスト
- 16. Rails 復習 エンジニア戦記#5
- 17. Pay.jpとRailsで決済機能実装してみた。
- 18. 初学者目線のアセットパイプライン。
- 19. 画像ファイルについてしまった[ ]を取り除く
- 20. haml-railsでerbファイルをhamlに変換する方法
DockerでRuby on Rails + Reactを別々にアプリ作成する環境構築手順
#やったこと
Dockerを用いてAPIモードのRails(バックエンド)とReact(フロントエンド)を作成する開発環境の構築を行った。#1, 各種ファイルの用意
プロジェクト用のフォルダを用意して、Rails側のapiフォルダとReact側のfrontフォルダに分ける。
プロジェクト用フォルダの直下に、docker-compose.ymlを置く。
![スクリーンショット 2020-01-08 6.30.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367226/1e3803a0-9bca-c3d2-d56a-7954080275df.png)###docker-compose.ymlの記述
この記事( https://qiita.com/takano-h/items/84ae73b41eef83602bd9 )を参考に記述。“`docker-compose.yml
version: ‘3’services:
db:
image: postgres
volu
[Rails] Transaction内で条件分岐してrescue
# そもそもTransactionなぜ必要なのか
複数にまたがるモデルのデータ同時に保存したいときや、`find_each`などで複数回データをいじって保存したいときに、`Transaction`を利用します。“`users_conroller.rb
def create
User.transaction do
@user.save!respond_to do |format|
format.js { render :~~path }
end
end
rescue => e
logger.debug(“failed. because of #{e}”)
redirect_to root_path
end
end
“`上記のようなコードは問題なく動作します。
しかし下記の様にもしcontroller内に渡ってくるparamsによって`if..end`で囲むと、`syntax error`が発生します。“`users_controller.rb
def create
if user_params[:u
rails環境構築 gem install sqlite3 エラー
railsを始めようと思い、下記サイトを参考にrailsのインストールを試みたところ、
rails new app名を実行したところで下記エラーがでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561469/f2d97d3e-d470-0dc1-5f24-02c28e392401.png)sqlite3のgemがないのがエラーの原因だと思ったため、gem listを実行してみると、確かにsqlite3がありませんでした。
なのでgem install sqlite3でsqlite3をインストールしようとしたところ、次のエラーがでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561469/9ce97471-072e-a177-858f-3d8cd82e8aef.
[Rails]本日のエラー
今度作業する時に、あれ?過去にも同じエラーが起こったことあるぞ!!となった時用に記事として保管しておくのが目的です。
なので、個人的に使用する記事なので投稿内容は大雑把にまとめます。記事の流れ
1.なんの作業中にエラーが起きたのか
2.エラーの内容
3.対処法
4.原因以上の流れで書いていきます。
#1.dbをリセットしようとした時
“`ターミナル.
rake db:migrate:reset
“`#2.エラー内容
“`
ActiveRecord::NoEnvironmentInSchemaError:Environment data not found in the schema. To resolve this issue, run:
bin/rails db:environment:set RAILS_ENV=development
Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by
【Rails】2つのテーブルを結合しつつ、欲しいカラムだけを抜き出してJSONで返すサンプルコード
## はじめに
Railsで2つのテーブルを結合しつつ、欲しいカラムだけを抜き出してJSONにして返すサンプルコードです。このコードで出来たJSONはネストされておらず、シンプルなので扱いやすいです。
## 環境
“`yaml
OS: macOS Catalina 10.15.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`## 前提
– **UserモデルとPostモデル**がある
– User1に対してPostが多の関係
– それぞれのテーブル名は**usersとposts**
– 以下のように関連付け済み“`ruby:user.rb
class User < ActiveRecord::Base has_many :posts end ``` ```ruby:post.rb class Post < ApplicationRecord belongs_to :user end ``` ## 欲しいデータ 各テーブルのカラムは以下のように多数あり、 **「不要なデータは取得したくない!」** という状況を想定し、`#欲しい`を付けた
Dockerでalpineイメージ使用時に発生したstandard_init_linux.go:211: exec user process caused “no such file or directory” を解決
# alpineイメージ使用時に発生するstandard_init_linux.go:211: exec user process caused “no such file or directory” を解決
Docker X Rails6 X MySQL8で環境構築する際に、初めてalpineイメージを使用するとエラーに出会いました。
alpineはLinuxディストリビューションの1つで、CentOSやUbuntuよりも軽量なためDockerイメージのサイズを小さくすることができます。## 各種設定
“`:Dockerfile
FROM ruby:2.7.0-alpine
ENV LANG C.UTF-8RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lockRUN apk update -qq && apk add –no-cache yarn build-base tzdata libxml2-dev mariadb-dev
herokuへデプロイ後、We’re sorry, but something went wrong.
#We’re sorry, but something went wrong.
herokuへデプロイ後にブラウザで表示されるました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/a567c114-d89a-b7a8-0517-5aa7d037922e.png)
#原因
色々調べたところ
###・データベースの変更が更新されていない。
###・モデルにアクセスする処理を行っているのに、heroku上のデータベースをリセットを行っていない。これは、デプロイ自体はできているみたい。
このパターンが多いみたいです。
僕もそうでした。#解決法
“`
$heroku run rake db:migrate
“`
↑これで、heroku上のデータベースを更新いけました。。一安心です
AWSでのデプロイ手順①ネットワーク環境設定
初心者には難関である、AWSを使用したデプロイ手順を書いてみます
AWSはUIもよく変化するので、
現在のもの(2019/10)で書いています※アカウントがない人はまず新規で申し込みしておいてください
今回内容
[**STEP1 ネットワーク環境設定**](https://qiita.com/drafts/9a8e88a777a3a4ee7a09#step1-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A)
1.VPCの作成
2.サブネットの作成
3.インターネットゲートウェイの作成
4.ルートテーブルの作成
5.サブネットとの紐付け
6.セキュリティグループの作成[**STEP2 EC2の設定**]
(https://qiita.com/drafts/9a8e88a777a3a4ee7a09#step2-ec2%E3%81%AE%E8%A8%AD%E5%AE%9A)
1.EC2にてインスタンスの作成
2.Elastic IPの割り当て
3.
railsでdeviseを使う手順
ユーザー登録の際に使える、deviseという便利なツール。
よく使うことが多いので、簡単な手順をまとめました。## gemを入れる
まずはgemを入れます“`gemfile
gem ‘devise’
“`
“`
$ bundle install
“`## deviseをインストールする
次にアプリケーション内にdeviseを読み込みます“`
$ rails g devise:install
“`## deviseを使って、モデルを作成
今回はユーザーモデルを作ってみます“`
$ rails g model devise user
“`
必要な追加カラム等があれば、マイグレーションファイルを編集します“`.rb
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
#以下のように追加
t.string :name, null: false, defa
rails db:migrateでエラー(StandardError: An error has occurred, this and all later migrations canceled:)
$rails db:migrate、または、$rake db:migrateを行った後の謎のエラー。
“`
== 20200107095832 CreateMicroposts: migrating =================================
— create_table(:microposts)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:SQLite3::SQLException: table “microposts” already exists: CREATE TABLE “microposts” (“id” INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, “content” text, “user_id” integer, “created_at” datetime NOT NULL, “updated_at” datetime NOT NULL)
・
・以下つづく
[Rails]ログインidと投稿者が一致した時のみ編集・削除アイコンを表示させる条件式をモデルに書き出す
ビューに記載していた条件文を可読性、再利用性向上のためモデルに記載する。
※初心者です。ご指摘あればぜひお願いします。
# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem Sorcery使用`
#変更前
“`ruby:boards_controller
def index
@boards = Board.all.includes(:user).recent
end
“`
“`ruby:_boards.html.erb
<% if current_user.id == board.user_id %><%= link_to icon('fas', 'pen'), edit_board_path(board), id: :"button-edit-#{board.id}" %>
<%= link_to icon('fas', 'trash-alt'), board_path(board), id: :"button-delete-#{boa【Rails】ブックマーク(お気に入り)機能
備忘録です。
掲示板におけるブックマーク機能追加し、ブックマーク一覧ページを作成。
※初学者です。ご指摘あればお願いします!# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem font-awesome-sass`
`gem Sorcery`
→installしていない場合、後述のcurrent_userメソッドが使用できません。# ER図
中間テーブル(Bookmark)使用。
中間テーブル…userとboardのidだけを保存するテーブル。
![bookmark_ER図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562358/1a2092fb-8d9c-7ded-3be6-7ccd89eedf8f.png)User:Board = 1:多
User:Bookmark = 1:多
Board:Bookmark = 1:多あくまでブックマーク機能実装の記事ですので、**UserとBoardモデルはすでに作成されているものとして進行しますのでご注意ください
Linuxサーバからリモートリポジトリにpush & リモートリポジトリからローカルPCにclone
######目標
– linuxサーバ上で運用されているrailsアプリのソースコードをGitlab.comのリモートリポジトリにプッシュする。
– リモートリポジトリからローカルPCのローカルリポジトリにクローンする。######環境
– linux(GCE, Debian)
– Gitlab.com
– Mac(OSX 10.15.2)######準備:git install (linuxサーバ、ローカルPCにGitをインストール)
下記サイトなどを参考にしてください。
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB######1. linuxの操作
######git config(USER_NAMEとEMAILは環境による)
“`Bash:ターミナル
git config –list
git config –globapplication_helperを使う
長くてみにくかったviewの記述を`application_helper.rb`に移動させて`content_tag`と言うものを使ってhtmlタグを生成する
`content_tag`について
参考: https://qiita.com/yusaku_/items/d6e98b77124131e628fb“`rails/app/helpers/try_helper.rb
def discount_text(service, provider)
discount_price = provider.key == “noe-jx-group” ? service[‘discount’].to_f : service[‘discount’].to_i
discount_from_energy = if SetPlan.is_discount_from_energy?(service)
“/kWh”
elsif SetPlan.yearly?(service)
“/年”
elsif SetPlan.monthly?(ser【学習まとめ】 Railsアプリケーションのテスト
## なぜテストですか。
ソフトウェア開発の仕事は、機能しているコードを書くことと思います。
問題は、正確さをどうやって確保できるのか
一つの方法は、コードを書いた後で、実行してみます。この方法は、小さいプロジェクトに対して効果がありますが、ある時点で機能が多すぎて追跡できません。新しいコード(フィーチャー)を追加すると、他のコードが予期せず壊れてしまいます。これは、`regression`(リグレックション)と呼ばれています。
より良い方法があり、自動テストです。コードで作成したコードを自動的にテストしてもらいます。自動テストは、私たちのプログラムが機能していること、そして今後も機能して続いていることを確認します。
#### お金や時間の節約
自動テストは、バグをより早く発現し、本番に不正な状態を展開されるのを防ぎます。
#### コードに自信がある
良いテストがあると、
何か壊すことを恐れことなく、コードに大きな変更を加えることができます。
金曜日の午後でも、リリースする自信があります。#### より良いドキュメント
ドキュメントは、コードを更新するとフルい
Rails 復習 エンジニア戦記#5
Rails 学習コース ⅢとⅣの復習
変数の表示方法
アクションを変数で表示する方法
データでの保存・読み出しの方法
Link_toメソッドの使い方【感想】
仕事初めでテンパってしまって復習のみとなってしまったが
明日からがんばるのだ、俺!Pay.jpとRailsで決済機能実装してみた。
#投稿経緯
payjpの実装記事そのものはたくさんあるのですが、**haml**で書かれてるのがほとんど。
正直僕はまだ**slim**や**haml**のような短縮系での書き方がわからず手間取ったので、今回通常盤での記載で投稿しようと思いました。#実装
##APIキー取得
####1. Payjpにログイン
https://pay.jp/login
※アカウントがなければ↑からも作成可能。####2. ログイン後APIをクリック
クリック後が写真の画面になります。
大事な情報になるので、基本的には第三者に見せないようにしましょう。初学者目線のアセットパイプライン。
#アセットパイプラインとは
JavaScriptやCSSのアセット(ここで言うとJavaScriptのコードやスタイルシート、画像など)をスペースや改行を詰めて最小化したり圧縮して連結するための機能。
app/assetsの中は開発者にとってわかりやすいように複数のディレクトリ、ファイルに分かれていて、webブラウザに行く前にそれらを結合する。#アセットパイプラインの仕事
– 高級言語のコンパイル※
– 連結
– 圧縮
– publicディレクトリにファイルを配置以上の作業をアセットコンパイルという。
#導入方法
Gemfileに記載しなくてもGemfile.lock勝手に入っている、sprockets-railsというgemによって実行される。#まとめ
javascriptを勉強していて、必要な知識だったので調べてみたらざっとこんな感じになりました。
ものすごく短い記事ですが、今はこの程度の理解。理解が深まればまた追記していきますが、みていて指摘などありましたらありがたいです。画像ファイルについてしまった[ ]を取り除く
# はじめに
画像ファイルを複数登録するときに、multipleを使うと簡単に実装できます。
が、(自分の環境だけなのか)保存されるデータに含まれる画像ファイル名に
[ ]がついてしまい、実際に保存されている画像ファイル名を齟齬が生じ
エラーとなる自体が発生していました。
そこで、Model側にこれを取り除くメソッドを追加しましたが、同じような環境で
困っている方はご利用ください
~~最近、某プログラミングスクールではこれの影響なのかmultipleを使わないようにと
御達しが出たようですね。~~# 前提条件
ItemモデルはImagesを複数持つアソシエーションが組まれていること# コード
“`ruby:app/models/image.rb
class Image < ApplicationRecord belongs_to :item, optional: true validates_presence_of :item mount_uploaders :image_url, ImageUploader def image_path rethaml-railsでerbファイルをhamlに変換する方法
個人アプリ開発において新しく立ち上げる度に何度も調べてしまうので備忘録として残す。
## 結論
このgemをGemfileに記述“`:Gemfile
gem “haml-rails”
“`bundle installを実行
“`:ターミナル
$ bundle install #bundle でも可
“`下記コマンドを実行し、erbファイルをhamlに変換。
“`:ターミナル
$ rails haml:erb2haml
“`元のerbファイルを削除するかどうかを聞かれる。不要な場合はyを選択。
“`:ターミナル
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)
y
Deleting original .erb files.
———————————————————————–関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた