20210728のMacに関する記事は9件です。

Django Tutorial

目次 1. プロジェクトの作成 2. アプリケーションの作成 3. ページの作成 4. フォームを使用したページを作る 5. モデルを作成する 6. データベースを操作する For more information はじめに 実行環境:MacOS + Python3 + venv 1. プロジェクトの作成 下記コマンドを実行する。 mkdir project_name cd project_name python3 -m venv venv # create virtual env source venv/bin/activate # activate env django-admin startproject project_name # create project python manage.py runserver # run server projecy_nameは任意のプロジェクト名 venvは任意の環境名 2. アプリケーションの作成 下記コマンドを実行し、アプリを作成する。 python manage.py startapp app_name その後、settings.pyにアプリ名を追加する。 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app_name', # add app name ] ディレクトリ構成は以下の通り。 - project_name - manage.py # アプリケーション全体の管理を行う - project_name - asgi.py # 非同期Webアプリケーションのためのプログラム - settings.py # プロジェクトの設定情報を格納 - urls.py # URLを管理するファイル - wsgi.py # 一般的なWebアプリケーションのプログラム - app_name - migrations # データベース関連のファイルを格納 - admin.py # 管理者ツール - apps.py # アプリケーション本体の処理を記述 - models.py # モデルに関する処理を記述 - tests.py # テストに関する処理を記述 - views.py # 画面表示に関する処理を記述 3. ページを作成する はじめに、project_name/urls.pyを編集する。 project_name/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('app_name/', include('app_name.urls')) ] include()で、app_name内ファイルへの参照をapp/urls.pyに受け渡している include()の引数はapp_name/urls.py 次に、app_name/urls.pyを作成・編集する。 app_name/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), # index page ] 次に、views.pyに関数/クラスを追加する。 app_name/views.py from django.shortcuts import render def index(request): params = {'title': 'タイトル', 'msg': 'サンプルページです'} return render(request, 'hello/index.html', params) 変数は辞書で受け渡す 次に、renderするHTMLを作成する。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <h1>{{title}}</h1> <p>{{msg}}</p> </body> app_name/templates/app_name/にHTMLファイルを作成する 4. フォームを使用したページを作る 実行手順 はじめに、app_name/forms.pyを作成する。 app_name/forms.py from django import forms class HelloForm(forms.Form): name = forms.CharField(label='name') mail = forms.CharField(label='mail') age = forms.IntegerField(label='age') forms.Formを継承したクラスを作る fieldがそのまま入力フォームになる labelはフォームの前に表示されるラベル 引数を指定してバリデーションが設定可能 次に、views,pyにフォームを使用する関数を追加する(ここではindex.html)。 app_name/views.py from django.shortcuts import render from .forms import HelloForm def index(request): params = { 'title': 'Hello', 'msg': 'your data: ', 'form': HelloForm() } return render(request, 'hello/index.html', params) 次に、HTMLでフォームを作成する。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <h1>{{title}}</h1> <p>{{msg}}</p> <form action="{% url 'form' %}" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="click"> </form> </body> {{form}}とすれば良い "{% url 'form' %}"のformは、app_name/urls.pyのurlpatternsの引数nameに対応 formの値が{% url 'form' %}に渡され、実行される {% csrt_token %}はCSRF攻撃を避けるためのコマンド 最後に、フォームを受け取る関数を実装する。 app_name/views.py def form(request): if (request.method == 'POST'): msg = request.POST['msg'] params = { 'title':'Hello', 'msg':'こんにちは、' + msg + 'さん。', } return render(request, 'hello/index.html', params) else: raise Exception('Form was not accepted!') POSTによりフォームが与えられた時、request.method = 'POST'となる フォームの値はrequest.POST['キー']で取り出し可能 views.py内の1つの関数でGET/POSTの処理を行う この場合、request.method == 'POST'で条件分岐すれば良い。 app_name/views.py from django.shortcuts import render from .forms import HelloForm def index(request): params = { 'title': 'Hello', 'msg': 'your data: ', 'form': HelloForm() } if (request.method == 'POST'): params['msg'] = '名前: ' + request.POST['name'] + 'メール:' + request.POST['mail'] + '年齢' + request.POST['age'] params['form'] = HelloForm(request.POST) return render(request, 'hello/index.html', params) formにrequest.POSTを引き渡すと、フォームで送信した値がデフォルトで入力される views.py内の1つのクラスでGET/POSTの処理を行う GET/POSTの両方の処理を行う場合、クラスを使用した方が良い(詳細略)。 5. モデルを作成する はじめに、settings.pyを設定する。SQLiteを使用する場合はデフォルトの設定で良い(詳細略)。 次に、model.pyにクラスを追加する。 app_name/models.py from django.db import models class Friend(models.Model): name = models.CharField(max_length=100) mail = models.EmailField(max_length=200) gender = models.BooleanField() age = models.IntegerField(default=0) birthday = models.DateField() models.Modelを継承する 列をフィールドで定義 次に、マイグレーションする。 python manage.py makemigrations app_name python manage.py migrate 6. データベースを操作する 6.1 レコードを取得する 例として、views.pyでDBのレコードを取得する。 app_name/views.py from django.shortcuts import render from .models import Friend def index(request): data = Friend.objects.all() params = { 'title': 'Hello', 'message': 'all friends.', 'data': data } return render(request, 'hello/index.html', params) モデル名.object.all()で全レコード取得 モデル名.objects.all()はQuerySetというDjango特有のクラス 参考:Django逆引きチートシート(QuerySet編) また、QuerySetはSQL文を使用して検索が可能。 data = モデル名.object.raw('SQL文') テーブル名は'アプリ名_モデル名'となる 最後に、QuerySetをHTMLで受け取る。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body class="container"> <h1 class="display-4 text-primary">{{title}}</h1> <p class="h5 mt-4">{{message|safe}}</p> <table class="table"> <tr> <th>ID</th> <th>NAME</th> <th>GENDER</th> <th>MAIL</th> <th>AGE</th> <th>BIRTHDAY</th> </tr> {% for item in data %} <tr> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{% if item.gender == False %}male{% endif %}</td> <td>{% if item.gender == True %}female{% endif %}</td> <td>{{item.mail}}</td> <td>{{item.age}}</td> <td>{{item.birthday}}</td> </tr> {% endfor %} </table> </body> {% for 変数 in QuerySet %}で取り出し可能 参考:QuerySetはpandasのデータフレームにも変換可能 df = pd.DataFrame(list(モデル名.object.all().values())) 6.2 レコードを追加する 通常のフォームを使用する 例として、フォームで送信された値をDBに追加する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend from .forms import HelloForm def create(request): params = { 'title': 'Hello', 'form': HelloForm() } if (request.method == 'POST'): name = request.POST['name'] mail = request.POST['mail'] gender = 'gender' in request.POST age = int(request.POST['age']) birth = request.POST['birthday'] friend = Friend(name=name, mail=mail, gender=gender, age=age, birthday=birth) friend.save() return redirect(to='/hello') return render(request, 'hello/create.html', params) save()でレコードを追加 既にPrimary keyが存在する場合は、既存のレコードを更新する(後述) データ追加のためのフォームを使用する(forms.ModelForm) はじめに、forms.pyにクラスを追加する。 app_name/forms.py from django import forms from .models import Friend class FriendForm(forms.ModelForm): class Meta: model = Friend fields = ['name','mail','gender','age','birthday'] Metaはmodelの継承のためのクラス modelのフィールドを流用できる 次に、ModelFormを使用して、フォームで送信された値をDBに追加する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend from .forms import HelloForm, FriendForm def create(request): params = { 'title': 'Hello', 'form': HelloForm() } if (request.method == 'POST'): obj = Friend() friend = FriendForm(request.POST, instance=obj) friend.save() return redirect(to='/hello') return render(request, 'hello/create.html', params) 6.3 既存レコードを更新する 使用しているメソッドは追加の時と同様に、save()を使用する。 6.4 既存レコードを削除する QuerySetオブジェクトのdeleteメソッドを実行する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend def delete(request): friend = Friend.objects.get(id=num) if (request.method == 'POST'): friend.delete() return redirect(to='/hello') params = { 'title': 'Hello', 'id': num, 'obj': friend } return render(request, 'hello/delete.html', params) For more information Django逆引きチートシート(Model編) Django逆引きチートシート(QuerySet編) Django 逆引きチートシート (Template編)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Django Quick Tutorial

目次 1. プロジェクトの作成 2. アプリケーションの作成 3. ページの作成 4. フォームを使用したページを作る 5. モデルを作成する 6. データベースを操作する 7. 管理者ツールを使う For more information はじめに 実行環境:MacOS + Python3 + venv 1. プロジェクトの作成 下記コマンドを実行する。 mkdir project_name cd project_name python3 -m venv venv # create virtual env source venv/bin/activate # activate env django-admin startproject project_name # create project python manage.py runserver # run server projecy_nameは任意のプロジェクト名 venvは任意の環境名 2. アプリケーションの作成 下記コマンドを実行し、アプリを作成する。 python manage.py startapp app_name その後、settings.pyにアプリ名を追加する。 project_name/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app_name', # add app name ] ディレクトリ構成は以下の通り。 - project_name - manage.py # アプリケーション全体の管理を行う - project_name - asgi.py # 非同期Webアプリケーションのためのプログラム - settings.py # プロジェクトの設定情報を格納 - urls.py # URLを管理するファイル - wsgi.py # 一般的なWebアプリケーションのプログラム - app_name - migrations # データベース関連のファイルを格納 - admin.py # 管理者ツール - apps.py # アプリケーション本体の処理を記述 - models.py # モデルに関する処理を記述 - tests.py # テストに関する処理を記述 - views.py # 画面表示に関する処理を記述 3. ページを作成する はじめに、project_name/urls.pyを編集する。 project_name/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('app_name/', include('app_name.urls')) ] include()で、app_name内ファイルへの参照をapp/urls.pyに受け渡している include()の引数はapp_name/urls.py 次に、app_name/urls.pyを作成・編集する。 app_name/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), # index page ] 次に、views.pyに関数/クラスを追加する。 app_name/views.py from django.shortcuts import render def index(request): params = {'title': 'タイトル', 'msg': 'サンプルページです'} return render(request, 'hello/index.html', params) 変数は辞書で受け渡す 次に、renderするHTMLを作成する。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <h1>{{title}}</h1> <p>{{msg}}</p> </body> app_name/templates/app_name/にHTMLファイルを作成する Templateで変数を取得するコマンドはこちらを参照 4. フォームを使用したページを作る 実行手順 はじめに、app_name/forms.pyを作成する。 app_name/forms.py from django import forms class HelloForm(forms.Form): name = forms.CharField(label='name') mail = forms.CharField(label='mail') age = forms.IntegerField(label='age') forms.Formを継承したクラスを作る fieldがそのまま入力フォームになる labelはフォームの前に表示されるラベル 引数を指定してバリデーションが設定可能 次に、views,pyにフォームを使用する関数を追加する(ここではindex.html)。 app_name/views.py from django.shortcuts import render from .forms import HelloForm def index(request): params = { 'title': 'Hello', 'msg': 'your data: ', 'form': HelloForm() } return render(request, 'hello/index.html', params) 次に、HTMLでフォームを作成する。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <h1>{{title}}</h1> <p>{{msg}}</p> <form action="{% url 'form' %}" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="click"> </form> </body> {{form}}とすれば良い "{% url 'form' %}"のformは、app_name/urls.pyのurlpatternsの引数nameに対応 formの値が{% url 'form' %}に渡され、実行される {% csrt_token %}はCSRF攻撃を避けるためのコマンド 最後に、フォームを受け取る関数を実装する。 app_name/views.py def form(request): if (request.method == 'POST'): msg = request.POST['msg'] params = { 'title':'Hello', 'msg':'こんにちは、' + msg + 'さん。', } return render(request, 'hello/index.html', params) else: raise Exception('Form was not accepted!') POSTによりフォームが与えられた時、request.method = 'POST'となる フォームの値はrequest.POST['キー']で取り出し可能 views.py内の1つの関数でGET/POSTの処理を行う この場合、request.method == 'POST'で条件分岐すれば良い。 app_name/views.py from django.shortcuts import render from .forms import HelloForm def index(request): params = { 'title': 'Hello', 'msg': 'your data: ', 'form': HelloForm() } if (request.method == 'POST'): params['msg'] = '名前: ' + request.POST['name'] + 'メール:' + request.POST['mail'] + '年齢' + request.POST['age'] params['form'] = HelloForm(request.POST) return render(request, 'hello/index.html', params) formにrequest.POSTを引き渡すと、フォームで送信した値がデフォルトで入力される views.py内の1つのクラスでGET/POSTの処理を行う GET/POSTの両方の処理を行う場合、クラスを使用した方が良い(詳細略)。 5. モデルを作成する はじめに、settings.pyを設定する。SQLiteを使用する場合はデフォルトの設定で良い(詳細略)。 次に、model.pyにクラスを追加する。 app_name/models.py from django.db import models class Friend(models.Model): name = models.CharField(max_length=100) mail = models.EmailField(max_length=200) gender = models.BooleanField() age = models.IntegerField(default=0) birthday = models.DateField() models.Modelを継承する 列をフィールドで定義 次に、マイグレーションする。 python manage.py makemigrations app_name python manage.py migrate マイグレーションについてさらに知りたい場合はこちら 6. データベースを操作する 6.1 レコードを取得する 例として、views.pyでDBのレコードを取得する。 app_name/views.py from django.shortcuts import render from .models import Friend def index(request): data = Friend.objects.all() params = { 'title': 'Hello', 'message': 'all friends.', 'data': data } return render(request, 'hello/index.html', params) モデル名.objectsはQuerySetというDjango特有のクラス モデル名.object.all()で全レコード取得 参考:Django逆引きチートシート(QuerySet編) また、QuerySetはSQL文を使用して検索が可能。 data = モデル名.object.raw('SQL文') テーブル名は'アプリ名_モデル名'となる 最後に、QuerySetをHTMLで受け取る。 app_name/templates/app_name/index.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{title}}</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body class="container"> <h1 class="display-4 text-primary">{{title}}</h1> <p class="h5 mt-4">{{message|safe}}</p> <table class="table"> <tr> <th>ID</th> <th>NAME</th> <th>GENDER</th> <th>MAIL</th> <th>AGE</th> <th>BIRTHDAY</th> </tr> {% for item in data %} <tr> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{% if item.gender == False %}male{% endif %}</td> <td>{% if item.gender == True %}female{% endif %}</td> <td>{{item.mail}}</td> <td>{{item.age}}</td> <td>{{item.birthday}}</td> </tr> {% endfor %} </table> </body> {% for 変数 in QuerySet %}で取り出し可能 参考:QuerySetはpandasのデータフレームにも変換可能 df = pd.DataFrame(list(モデル名.object.all().values())) 6.2 レコードを追加する 通常のフォームを使用する 例として、フォームで送信された値をDBに追加する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend from .forms import HelloForm def create(request): params = { 'title': 'Hello', 'form': HelloForm() } if (request.method == 'POST'): name = request.POST['name'] mail = request.POST['mail'] gender = 'gender' in request.POST age = int(request.POST['age']) birth = request.POST['birthday'] friend = Friend(name=name, mail=mail, gender=gender, age=age, birthday=birth) friend.save() return redirect(to='/hello') return render(request, 'hello/create.html', params) save()でレコードを追加 既にPrimary keyが存在する場合は、既存のレコードを更新する(後述) データ追加のためのフォームを使用する(forms.ModelForm) はじめに、forms.pyにクラスを追加する。 app_name/forms.py from django import forms from .models import Friend class FriendForm(forms.ModelForm): class Meta: model = Friend fields = ['name','mail','gender','age','birthday'] Metaはmodelの継承のためのクラス modelのフィールドを流用できる 次に、ModelFormを使用して、フォームで送信された値をDBに追加する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend from .forms import HelloForm, FriendForm def create(request): params = { 'title': 'Hello', 'form': HelloForm() } if (request.method == 'POST'): obj = Friend() friend = FriendForm(request.POST, instance=obj) friend.save() return redirect(to='/hello') return render(request, 'hello/create.html', params) 6.3 既存レコードを更新する 使用しているメソッドは追加の時と同様に、save()を使用する。 6.4 既存レコードを削除する QuerySetオブジェクトのdeleteメソッドを実行する。 app_name/views.py from django.shortcuts import render, redirect from .models import Friend def delete(request): friend = Friend.objects.get(id=num) if (request.method == 'POST'): friend.delete() return redirect(to='/hello') params = { 'title': 'Hello', 'id': num, 'obj': friend } return render(request, 'hello/delete.html', params) 7. 管理ツールを使う はじめに、管理者を作成する。 python manage.py createsuperuser ユーザ名、メールアドレス。パスワードを入力されるように求められるので入力 次に、管理者ツールで編集できるデータベースを追加する(optional)。 例として、Friendを追加する。 app_name/admin.py from django.contrib import admin from .models import Friend admin.site.register(Friend) 最後に、管理者画面 (ex. http://localhost::8000/admin) を開く。 For more information Django逆引きチートシート(Model編) Django逆引きチートシート(QuerySet編) Django 逆引きチートシート (Template編) Django マイグレーション まとめ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macでzsh: command not found: npmがでる

解決方法 PATHに追加されていないことが問題らしい 下記実行した時にでてくるPATHに追加しなくてはならない模様 nodebrew setup ~/.zshrcを開いて、任意の場所にnodebrew setupで出てきた「export PATH ~~ 」を追加し保存 terminal再起動したらつかえるようになっていた! 解決方法忘れないようにめも
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

pyenv-virtualenvのインストール

はじめに pyenvを再インストールしたので、ついでにpyenv-virtualenv(link)もインストールしてみる。 環境 macOS: Catalina 10.15.7 xCode: version 12.4 インストール Homebrewでインストール。 terminal $brew install pyenv-virtualenv 以下を.bashrcに書き込む。 .bashrc eval "$(pyenv virtualenv-init -)" 使い方 仮想環境の作り方 terminal # Determine python version and create virtualenv $ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10 # Create vertualenv from current version $ pyenv virtualenv venv34 仮想環境の確認方法 terminal $ pyenv virtualenvs 仮想環境のActivateとDeactivate terminal $ pyenv activate <name> $ pyenv deactivate 仮想環境の消し方 terminal $ pyenv uninstall <name>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

pyenvの再インストール

はじめに pyenvでpython環境を整えていたが、正常に動作しないので再インストールすることにした。具体的には、新しく異なるバージョンのpythonをインストールして、global環境をそれに切り替えても、systemのpythonを参照してしまう。以下に状況を記録しておく。 terminal $pyenv global X.Y.Z $pyenv global >> X.Y.Z $which python >> ~/.pyenv/shims/python $python --version >> python A.B.C 今まではきちんと動作していたし、元々インストールしていたpythonバージョンへの切り替えも問題なく行える。 色々調べてみたが記事が見当たらなかったので、TimeMachineで状態を保存しつつ、思い切って再インストールしてみることにした。 環境 macOS: Catalina 10.15.7 xCode: version 12.4 準備 terminal $brew doctor $softwareupdate --all --install --force 一応、brewを確認。Warning: A newer Command Line Tools release is available.と出たので、softwareupdateでアップデートする。 しかし、Command Line Toolはアップデートされなかったので、以下の手順でアップデートする。 terminal $sudo rm -rf /Library/Developer/CommandLineTools $sudo xcode-select --install うまくアップデートされた。 さらにここを参照してHomebrewの環境も整える。 terminal $brew install openssl readline sqlite3 xz zlib この時点で、zlibがinstallされていなかったことに気付く。 これが原因できちんと動作していないのかと思ったが(実際、新しくpyenv install x.y.zで正しくインストールされていなかった)、問題解決には至らず、結局systemのpythonを参照してしまう。 この時点で、timemachineで状態を保存しておく。 アンインストール ここを参照しつつアンインストール。 terminal $rm -rf $(pyenv root) $brew uninstall pyenv インストール ここを参照してインストール。 terminal $brew update $brew install pyenv 環境設定 ここを参照して.bash_profileと.bashrcに以下を書き込む。 .bash_profile #export PYENV_ROOT="$HOME/.pyenv" #export PATH="$PYENV_ROOT/bin:$PATH" <- These two lines are not needed if pyenv is installed with Homebrew. eval "$(pyenv init --path)" .bash_rc if command -v pyenv >/dev/null; then eval "$(pyenv init -)"; fi 最終的に 残念ながら状況は改善されなかった。ただ、pythonコマンドがpython2を参照にしているのが原因なのは分かった。例えば、pyenv global 3.X.Yと打った場合、python3はバージョン3.X.Yに変更されている。解決策が見つかるまで、python3とかpip3として、やることにする。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Rails】アプリ 新規作成 サーバー起動 手順

新規アプリ作成〜サーバー起動までを最短で行う方法を記述してます 環境 Ruby 3.0.2 Rails 6.1.4 MySQL 5.6 ※環境を合わせると、エラー最小限で進められると思います 新規アプリ作成 MySQLを使用する場合 $rails new <アプリ名を記入> -d mysql sqlite3を使用する場合 $rails new <アプリ名を記入> データベース設定 config/database.ymlで以下を設定する database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root ←MySQLのユーザー名がrootでない場合は変更する password: "<MySQLのパスワードを記入>" socket: /tmp/mysql.sock development: <<: *default database: <アプリ名>_development データベース作成 以下のコマンドを実行 $ rails db:create 以下が表示されればOK Created database '<アプリ名>_development' Created database '<アプリ名>_test' サーバー起動 ①以下のコマンドを実行 $ rails s ②GoogleCrome等で、localhost:3000を開いて、以下の画面が表示されれば完璧 参考資料 備考 最短で起動したかったので、自分で記事を作成してみました。 不備などあれば教えていただけますと助かります
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ActiveRecord::NoDatabaseError

環境 Ruby 3.0.2 Rails 6.1.4 事象 以下を実行するとエラーが表示された。 ①新規Railsアプリを作成(rails new) ②サーバーを起動(rails s) ③config/database.ymlにMySQLの接続情報を追記 ④localhost:3000を開く ActiveRecord::NoDatabaseError 解決策 以下を実行。 rails db:create 「データベースがないよ」というエラーなので、データベースを作ってあげればOK サーバーを再起動後にリロードしたら、Railsのデフォルト画面が表示されました 参考資料
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ActiveRecord::ConnectionNotEstablished【MySQL】

環境 Ruby 3.0.2 Rails 6.1.4 事象 以下を実行するとエラーが表示された。 ①新規Railsアプリを作成(rails new) ②サーバーを起動(rails s) ③localhost:3000を開く。 ActiveRecord::ConnectionNotEstablished 解決策 config/database.ymlでパスワードを設定 default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: "<パスワード>" socket: /tmp/mysql.sock development: <<: *default database: <アプリ名>_development この後、ActiveRecord::NoDatabaseErrorが出ましたが、これはこちらにまとめて置きます。 参考資料
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SSHキーの生成方法(Mac)

はじめに GitでSSH接続するためにSSHキーが必要なので、生成します。 環境 OS: macOS Big Sur 11.4 SSHキーの生成方法 SSHキーの存在確認 ~/.ssh フォルダに以下のファイルが存在すれば、すでにSSHキーが生成されています。 id_rsa (秘密鍵, private key) id_rsa.pub (公開鍵, public key) 再利用する場合はSSHキーの生成が不要です。 SSHキーの生成 ssh-keygen コマンドを実行してSSHキーを生成します。 # SSHキーを生成する # コメントにはメールアドレスを入力するのが一般的のよう $ ssh-keygen -C "{コメント}" # キーを保存するファイルを入力する # デフォルトで問題なければそのままEnterキーを押下する Generating public/private rsa key pair. Enter file in which to save the key (/Users/{ユーザー名}/.ssh/id_rsa): # パスフレーズを入力する(確認のため2回入力する) Enter passphrase (empty for no passphrase): Enter same passphrase again: # 秘密鍵と公開鍵が生成される Your identification has been saved in /Users/{ユーザー名}/.ssh/id_rsa. Your public key has been saved in /Users/{ユーザー名}/.ssh/id_rsa.pub. The key fingerprint is: SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX {コメント} The key's randomart image is: +---[RSA 3072]----+ | | | | | | | | | | | | | | | | | | +----[SHA256]-----+ SSHキーの確認 Vimなどのテキストエディタで ~/.ssh/id_rsa と ~/.ssh/id_rsa.pub を開き、内容に問題ないことを確認します。 ~/.ssh/id_rsa -----BEGIN OPENSSH PRIVATE KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX -----END OPENSSH PRIVATE KEY----- ~/.ssh/id_rsa.pub ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX {コメント} おわりに これでSSHキーの生成が完了です。 GitHubやAzure Reposへ公開鍵をアップロードすることで、SSH接続できます 参考リンク Connect to your Git repos with SSH - Azure Repos | Microsoft Docs
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む