Ruby3.1.2/Ruby on Rails 7.04のサイトをdockerで作ってRender.comにデプロイする

Ruby3.1.2/Ruby on Rails 7.04のサイトをdockerで作ってRender.comにデプロイする方法です。

参考にしたサイト

 

 

また、Windowsパソコンでは改行コードの問題でエラーが出たので

 

Windows で Docker 環境構築時のエラー対処法【no such file or directory】

https://qiita.com/uggds/items/00a1974ec4f115616580

 

https://tadtadya.com/vs-code-settings-files-eol/

このあたりの設定をする必要があります。

https://teratail.com/questions/278349

このエラーが引き続き出たので

docker-compose build –no-cache

を実行してからアプリを作り直した(rails newをした)ところ、成功しました。

 

次に、GitHubにリポジトリを作成してコマンドラインでpushしようとするがうまくいかない。

GitHub Desktopで初回pushは「ローカルに存在するファイルをGitHubのリポジトリに上げる」というようなものを選択してpush。成功。

 

Renderで存在するリポジトリを選択してGitHubと接続。

 

接続したらNew+と書いてある部分をクリックして、Web Servicesを追加。

 

Regionやプランを選択する

 

 

 

 

 

 

 

 

 

 

 

そうすると、有効なホスト名が設定されていませんというエラーが出るので、ホストを追加する。

 

Rails6でBlocked hostエラーが発生した時の対処法

config\environments\production.rb

のファイル内に

 

config.hosts << “songstory.onrender.com”
このような設定を追加。

 

また同じファイルに

  config.public_file_server.enabled = ENV[‘RAILS_SERVE_STATIC_FILES’].present? || ENV[‘RENDER’].present? # render.com用に追記

このように、|| ENV[‘RENDER’].present?

を追加します。

config\environments\ にある

development.rbとtest.rbには

config.hosts.clear

を追加します。これでホスト名関係は大丈夫なはず。

あとはデータベースの接続ですが、
DATABASE_URL と RAILS_MASTER_KEY

を設定してあげます。これはrender.comの管理画面で行います。

そうしたら、以下のファイルを作成。これはチュートリアルに書かれています。

bin\render.yaml


# databases:
#   - name: mysite
#     databaseName: mysite
#     user: mysite

services:
  - type: web
    name: mysite
    env: ruby
    buildCommand: "./bin/render-build.sh"
    startCommand: "bundle exec puma -C config/puma.rb"
    envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: mysite
          property: connectionString
      - key: RAILS_MASTER_KEY
        sync: false

このようにします。
今回データベースはConohaのデータベースを使っているので、コメントアウトしました。これで動いたのでとりあえずメモしておきます。

 

公式チュートリアル
https://render.com/docs/deploy-rails#deploy-to-render

 

ざっくりまとめ

・GitHubにソースが上がらなかったらGitHub Desktopをインストールしてアップロードするといける

・Render.comは外部のデータベース(今回はConoHaのMariaDB)
の設定は DATABASE_URL と RAILS_MASTER_KEY を管理画面で設定すればいけるっぽい。

Docker DesktopをWindows10にインストールしていく【2022年版】

Docker DesktopをWindows10にインストールしていくだけの記事です。


2022年に購入した新PCにWindows10でRuby on Railsの開発環境を整えられないかと思って記事を作りました。

まず
https://docs.docker.jp/desktop/index.html

ここに行きます。日本語で色々書いてある。

https://docs.docker.jp/desktop/windows/install.html
ここに飛びます。こちらにも日本語でいろいろ書いてある。システム要件など。

※ちなみに環境はWindows10 Proです。
なんとなくHypver-Vはオンにした状態でインストールしました。(なくても大丈夫っぽいですが)

そして、いよいよ本記事の本命です。
https://docs.docker.com/desktop/windows/install/

ここから、Docker Desktop on Windowsをインストールします。

Docker Desktop Installer.exeというもの。

実行します。管理人権限で実行しました。

管理人権限を設定するのが大変だった。

ここにやり方が書いてあります。

Administrator権限があるアカウントでログインします
「Windowsマーク」を右クリックして「ファイル名を指定して実行」を選択します。
>「UserAccountControlSettings」と入力して「OK」をクリックします

これがやり方。

Docker Desktop Installer.exeを実行します。

これでDockerが使えるようになりました。
「Close and restart」を押すとWindows10がいきなり再起動するので注意。

そうすると

こんな画面がでて、

https://docs.microsoft.com/ja-jp/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package

ここに飛ばされました。WSL2のインストールを完了させる必要があるとのこと。

言われるままにダウンロードした

wsl_update_x64.msi

というファイルを実行。wslのアップデートですね。

>docker --version
Docker version 20.10.17, build 100c701

そうすると、Dockerが無事起動するようになりました。
これで上記のようにDockerコマンドも使えるようになりました。

何かの参考にどうぞ。

プログラミングの問題をブラウザで解くウェブサイト「LeetCode」が実践的で面白い。

どうも、りーずです。

プログラミングの問題をブラウザ上で解くウェブサイト「LeetCode」というものがあります。

これはコーディングのテストなどでも実際に使われることがあるようです。
趣味的に普段から解いていると実践力が付きそう。

また、何かのプログラミング言語を学びたい場合などにLeetCodeの「Easy」の問題だけを解いていくというのも1つの手段として良さそうです。

「LeetCode – Easy問題」
https://leetcode.com/problemset/all/?difficulty=Easy

このサイトです。

自然とfor文やif文などを使うことになるので、プログラミング言語習得の1つの手段やキッカケに使えますね。

イメージとしては詰め将棋のような感じです。

ということで、簡単ながら記事として記しておきます。

Windows10環境のRuby on RailsでMySQLを使うときはRubyのbinフォルダにlibmysql. dllファイルを入れよう。

どうも、りーずです。

Windows10環境でのRuby on RailsでMySQLを使うときに、うまく動かない事がありました。

これはメモしておかないと忘れてしまうので、記事にしてメモしておきます。

上のツイートが今回の記事の伝えたいことのすべてです。「libmysql.dll」というファイルを使っているRubyの「bin」フォルダに入れましょう。


ちなみに今回のキッカケはHerokuのStackをアップグレードする時に起きたことです。

Herokuは、Linuxのバージョンを上げるためにStackを上げることがあります。
これにより、Rubyのバージョンが古いとデプロイが出来なくなることがあり、僕もRuby2.5を使っていたので、上げる必要がありました。

しかし、MySQL(mysql2というgem)を使うときに「何かのファイルをRuby本体に入れないと動かない」ということがあったのです。
この「何かのファイル」というのが今回紹介する「libmysql.dll」というファイルです。

Rubyがある「bin」フォルダに「libmysql.dll」を貼り付ける、というところが今回のポイントです。
ファイルは
http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.11-win32.zip

上記のリンクから直接ダウンロードします。
かなり原始的な方法ですが、これがすべてです。

「gem mysql2をインストール時にエラー「You’ve installed the binary version of mysql2.」が発生した場合」
https://mebee.info/2020/07/22/post-14994/

以上、何かの参考になれば幸いです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法

どうも、りーずです。

Windows10 + Docker環境でRuby on Railsの環境を作る方法です。

DockerというのはWindowsやMacでLinuxの仮想環境をカンタンに作れるもので、いまではアプリをインストールするだけで使えるようになります。

詳しくは

Windows10 ProでDockerを使ってみる。Docker Desktop for Windows。【メモ】

こちらの記事をどうぞ。

さて、このDesktop for Windowsをインストールし、Dockerが起動できるようになってから実際にRuby on RailsをDocker経由で動かす方法です。

実際に動作した時にツイートしたものがこちら。

ツイートに書いてあるものがすべてです。

【Windows】DockerでRuby on Rails開発環境構築方法
https://omathin.com/2020/12/29/docker-ruby-on-rails/

基本的に、こちらの記事の通りに行い、
docker-compose.ymlファイルで
image: mysql:5.

となっている部分を

image: mysql:5.7

というふうに、5.7を指定してあげます。(MySQLの5の最新バージョンは5.7だからです)

環境構築には

・Dockerfile
・Gemfile
・Gemfile.lock
・docker-compose.yml

の4つのファイルを自分で作ります。


具体的なコード

・Dockerfile

FROM ruby:2.6.7
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

・Gemfile

source 'https://rubygems.org'
gem 'rails', '5.2.5'

最初はこれだけでOK。
DockerfileにあるRUN bundle installが実行されるとGemfileが書き換えられます。
(この記事の時点で最新のRails 5.2.6でプロジェクトが作られました)

・Gemfile.lock

Gemfile.lockは空のものを用意します。
コマンドを実行することで、中身が作られます。

・docker-compose.yml

version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    stdin_open: true
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume:

このようにファイルを用意したら

docker-compose run web rails new . --force --database=mysql

このコマンドを実行。
さらに

docker-compose build

を実行します。

database.ymlの中身で

password:
host: localhost

となっている部分を

password: password
host: db

このように変更します。
パスワードとホスト名を、docker-compose.ymlに記載したものと合わせるためです。

あとは
docker-compose up -d

というコマンドでRailsサーバーのコンテナとMySQLサーバのコンテナを起動させます。

そうしたら、

docker-compose run web bundle exec rake db:create

というコマンドで、データベースを作成します。

ひとまずこれでうまく動いてくれたので、メモ的に残しておきます。

mysql2というmysql接続用のGemの開発が2021年5月時点ではストップしています。

なので、Rubyのバージョンは2.6系の最新の2.6.7を選びました。

以上、簡単なメモでした。

また、こちらのYouTube動画ではMySQL8.0での環境構築方法を解説されているので貼っておきます。


その他、参考にさせていただいた記事:

・WindowsでDocker+Rails(MySQL)環境を作る+便利なツール紹介https://qiita.com/makicamel/items/af2cdbdffe65eaf5d24d

・Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する
https://qiita.com/y-kawaguchi/items/64c69967dc86efd31a57