git コマンド(個人的によく使うやつまとめ)
随時、変更や追記あり ふんわりとしか覚えてません
# リポジトリを作成 $ git init # コミット $ git commit -m “commit内容” # プッシュ $ git push -u origin 反映させたいbranch名 # 自分のリモート(origin)のmasterブランチからpull $ git pull origin master # ブランチ作成 $ git branch 作りたいブランチ名 # ブランチを移動 $ git checkout 移動したいブランチ名 # ローカルブランチを消す $ git branch -d 削除したいブランチ名 # コミット一覧 $git log # ローカルブランチ一覧 $git branch # コミットするファイルとして、現在のディレクトリ以下の全てのディレクトリ、ファイルを指定 $ git add .git # addとコミットを同時に行う場合 $ git commit -a -m “commit内容” # フォーク元から自分のローカルに反映 $ git fetch upstream $ git merge upstream/master # 上二つをまとめて $git pull upstream master # 変更されたファイルの一覧を出す $ git status # コミットするステージに上げる $ git add ファイルパス # upstreamとかoriginが何かを確認する $ cat ./.git/config # こっちも上と似たような感じの $ git config --local -l # originとかupstreamのURLを確認する(リモート) $ git remote -v # バッシュの書き換えとか $ vim ~/.bash_profile #入力 i # 終わったら Esc :qw sift+z sift+z
Rails データベースの作り方(テーブル、カラム含めて)
毎回毎回データベースを作る時に制約やら何やらで調べ直すので自分用メモに。
データベース自体の作成
作っているアプリ名に基づく親玉の作成。
$ rake db:create
これでとりあえずデータベース自体はできました。
ついでにデータベースの削除は
$ rake db:drop
使ったことないけど一応。
database.ymlというファイルにデータベースに関する記述がしてあります。
テーブルモデルの命名規則
私はコントローラーに合わせてつけてます。確かコントローラーとテーブル名が違っても動くらしんですが、過去それをやって盛大に失敗したことがあるので初心者はあんまりしないほうがいいと思います。
- 例えばproductsテーブルを作る時
- テーブル名 → products(複数形)
- モデルのクラス名 → Product(先頭大文字の単数形)
- モデルファイル名 → product.rb(単数形)
モデル、テーブルを作る
$ rails g model モデルのクラス名
今回は↑を元に↓を実行
$ rails g model product
これでモデルの作成はOK。ちなみにcategoryみたいな最後がyの単語を複数形にする時は英語の授業で習った通りにcategoriesみたくします。 次はテーブルを作る。
上のコマンドをでモデルを作るとマイグレーションファイル(2018xxxxxxxxxx_create_products.rb) がdb/migrateディレクトリにできる。このマイグレファイルを編集して実行したらテーブル作成完了。
マイグレーションファイルの中身は、たぶんこうなってる。
class CreateProducts < ActiveRecord::Migration[5.0] def change create_table :products do |t| t.timestamps end end end
productsテーブルにname、detail、priceカラムを作るとする。 なので↑のファイルを下のように記述追加する。
class CreateProducts < ActiveRecord::Migration[5.0] def change create_table :products do |t| t.string :name, null:false t.text :detail t.integer :price t.timestamps end end end
カラムの型、名前、制約を追加してます。
カラムの型についてはこちら。
カラムの型 | 中身 | 主な用途 |
---|---|---|
string | 文字(比較的短め?) | 名前とかパスワードとか画像URL |
text | 文字(長め) | ブログ本文とか |
integer | 数字 | idとか何かの番号 |
datetime | 日付と時刻 | 使ったことない |
time | 時刻 | 使ったことない |
date | 日付 | 使ったことない |
boolean | 真偽値 | いつか使うと思う |
references | 外部キーの時 | 意外に使う |
他にもカラムの型はいくつかあるけど多分あんまり使わないと思う。実際使ってないやつもある。 私がよく使うと思うやつだけ今はとりあえず。
t.string :name, null:false
のnull:false
は空のままデータベースに保存できないということ。(not null制約)
外部キーとかnot nullとかはまとめて別記事でまとめます。
いよいよマイグレーションファイルの実行
$ rake db:migrate
これでもうテーブルとカラムができてます。
一応スキーマファイルで確認。 dbディレクトリにschema.rbってファイルがあるので中身を見てみる。
ActiveRecord::Schema.define(version: 2018xxxxxxxxxx) do create_table "products", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name", null: false t.text "detail", limit: 65535 t.integer "price" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end
さっき編集したマイグレーションファイルがversionのとなりに書いてます。ちゃんと読み込んでくれてる。 マイグレーションファイルは消しちゃダメ。スキーマちゃんがパニクるから。
rake db:migrate
した後に消したくなったら、まずrake db:migrateを無かったことにして、さらにマイグレーションファイルすら
消したい時はちゃんとコマンドがそれをターミナルで打ち込む。
rake db:migrateを無かったことにする
$ rake db:rollback
マイグレーションファイルを消したい
今回は$ rails g model product
のコマンドでマイグレーションファイル を作ったのでこうします。
$ rails d model product
これでモデルごと無くなりました。
ただカラムを一つ削除とかそういうのだったら別途コマンドがある。 モデルの綴りを間違えたとか何もかも消したくなった時に私は消します。
この辺もカラムの追加、編集、削除をその内まとめます。
インクリメンタルサーチ
jQueryを使ったインクリメンタルサーチのコードです。 データベースの中のitemを検索して出てきたitem名の横にある追加ボタンを押すとリストに追加され、リスト内のitem名の横にある削除ボタンを押すとリストの中から削除できる仕組みです。インクリメンタルサーチを勉強するための簡単なものなので実用性は低いです。 ネットで調べていろいろ組み合わせてるのであくまでも参考程度にどうぞ。
$(function() { $(document).on('turbolinks:load', function() { var result = $('#result'); var itemList = $('#items'); function appendItem(item) { var html = `<div class="item"> <p class="item__name">${item.name}</p> <a class="item-search-add item__btn item__btn--add" data-item-id="${item.id}" data-item-name="${item.name}">リストに追加</a> </div>` result.append(html); } function appendNoItem(noitem) { var html = `<div class="item">${ item }</div>` result.append(html); } function addItem(itemId, itemName) { var html = `<div id="item111" class="item"> <input name='list[item_ids][]' type='hidden' value='${itemId}'> <p class="item__name">${itemName}</p> <a class="item-search-remove item__btn item__btn--remove" data-item-id="${itemId}" data-item-name="${itemName}">リストから削除</a> </div>` itemList.append(html); } $('#item-search-field').on('keyup', function() { var input = $('#item-search-field').val(); $(result).empty(); if(input.length !== 0) { $.ajax({ type: 'GET', url: '/products', data: { keyword: input}, dataType: 'json' }) .done(function(items) { if (users.length !== 0) { itemss.forEach(function(item){ appendItem(item); }); } else { appendNoItem("一致するアイテムはありません"); } }) .fail(function() { alert("アイテム検索に失敗しました"); }) } }); $(document).on("click", ".item-search-add", function() { var itemId = $(this).attr("data-item-id"); var itemName = $(this).attr("data-item-name"); $(this).parent().remove(); addItem(itemId, itemName); }); $(document).on("click", ".item-search-remove", function() { $(this).parent().remove(); }); }); });
自分があるアプリを作ってるときのコードをまるまるコピペしてるのでクラス名とかid名とかわかりづらくてすみません。
Ruby on Railsを使ってアプリケーションを作ってみる
くそ初心者(私)のメモを兼ねてます。
手順
などなど、その他お察しください。
事前に…
まずターミナルで$ mkdir practice
を打ち込んで練習用ディレクトリを作成。
その後$ cd practice
でディレクトリ移動
rails newコマンドでアプリの雛形を作成
rails new 〇〇 rails new 〇〇 -オプション
が基本のコマンド
今回はrails _5.2.1_ new pandapp -d mysql
で作成。
rails5.2.1でオプションでmysql指定して「pandaapp」という名前のアプリケーションを作る。 作ったらcd pandaappのコマンドでpandaappディレクトリに移動する。
bundle exec rake db:create
データベース作成
余計なファイルを作らないようにする
sublimetextでconfig/application.rbを編集
module Pandaapp class Application < Rails::Application config.generators do |g| g.javascripts false g.helper false g.stylesheets false g.test_framework false end end end
記述を追加
haml導入
ジェムファイルに
gem 'haml-rails' //hamlのgem gem 'erb2haml' //erbファイルを一括変換するためのgem
の記述を追加してbundle install
ターミナルでrake haml:replace_erbs
を実行
今まであったerbファイルがhamlちゃんになってます。
これで完了
devise導入
Gemfileにgem 'devise'
を記述
からのbundle install
rails g devise:install
でdevise関連のファイルを作成
rails g devise user (userはモデル名)
でマイグレーションファイル ができるので適宜変更。
bundle exec rake db:migrate
でマイグレーション実行
deviseでは他にもビューファイルの生成やストロングパラメータのコントローラーの記述追加などありますが別記事参照です。
これらができたらルーティング設定してコントローラ作ってビューの編集…の流れでアプリケーションができます。
リモートリポジトリに強制同期
こんばんは、いきなりですけど、こんばんは。
GitHubを使ってるんですけどコミットしてプッシュして新しいリポジトリを作って、さあまた編集しようとした時に
「あれ?さっき作ったビューファイルが全部消えてる?!」
↓
リモートリポジトリを確認
↓
「は?リモートにはちゃんとマージされてる。」
となってしまいメンドくさいことになったので、その方法をメモ。
多分うまく同期できてなかったと思われ。
git fetch origin
git reset --hard origin/master
目当てのディレクトリに移動してターミナルに打ち込んだらいけた( ;∀;)
今はちゃんとマージする度にローカルのmasterリポジトリとリモートリポジトリを同期させてます。
自主制作
こんばんは、ここ2、3日はちょっと忙しくて更新してませんでした。
というのも応用編に入ってからまた一段と難しいアプリケーション(LINEみたいなやつ)を作るっていうのがカリキュラムになってきて、さらに今までやってきたことを生かしてtwitterとブログの中間みたいなアプリケーションの課題が投げつけられました(*´Д`*)
締め切りは一週間後…
rails newコマンドを使って作ります。HTMLとCSSも一から自分でやってます。scaffoldっていうやり方でやるとルーティングやコントローラ、ビューファイルまで作ってくれるんで今日試しにやってみたんですね。確かに一発でできました。これにdevise入れればできあがり!…なんでしょうけど、ちゃんと一から作ることにしました。
単純に面白くないっていうのもあるんですけど、一から作ることで理解を深められるし、scaffoldでやったら自分じゃ持て余してるファイルが作成されちゃうし、まだ読んだことないようなコードで書かれていて分からないし…。
scaffoldでやるのはそれが終わってから自分でじっくりやればいいかなって。
GitHubを昨日から本格的に使い始めたんだけどまだいまいちよく分からない。使っていけば慣れるんだけどねー、こればっかりはねー。ひたすらやるしかないわー。
ひと段落したらこのブログでも色々書きたいな、と思います。毎日は厳しいかもしれないけど今やってることもちょくちょく書きます。
ちなみに今日は、まずrails newでアプリケーションの雛形を作りました。mysqlオプションは忘れずに。何個かgemを入れて、migrateの時に不要なファイルが作成されないようにする記述をしたところまでです。
明日はデータベース作ってコントローラの作成、deviseの導入までできるといいなと思います。悩みどころは、ビューファイルはその都度やるべきか、あとでまとめて編集すべきなのか。迷う。
それでは、おやすみなさい。
勉強時間4時間
こんばんは、いまだにMacBookをどちらから開いたらいいのか分からない私です。
今日はほぼ一日中ハローワークか区役所にいたので勉強時間が短めです。
区役所では年金とかの手続き、ハロワでは失業保険の説明会でした。
今日はGitとGitHubの分野に手をつけたのでほんの少しだけそれについてアウトプットします。まーじでほんの少しな。
ではまずGitについて。Gitとはなんぞや?って感じですよね。今までのカリキュラムでもなーんとなくGitって聞いたことあったけど特に詳しく触れてなくて謎のままでした。それが今夜!ついに明かされる!
Gitとはバージョン管理システムです。…ばーじょん、かんり、しすてむ。と言いますと?ソースコードとかの更新履歴を管理するためのやつ!やつ!企業とかでもチームで開発する時とかに使われてるらしいです。これがあれば更新の日時や誰がしたのかとかも管理できるし間違って消してしまった時もセーブしたところからやり直せるってことですね。ファイル共有ソフト(どろっ○ぼっくす)とかだと一人が編集してるのに気づかずもう一人が変更しちゃったりとかして面倒くさいことになるんだってばよ。
Gitを使うに当たって必要なワードは「リポジトリ」と「コミット」。リポジトリ???まーた変なの出てきたよ。リポジトリとはファイルの変更を記録しておくための箱?袋?器だと思ってください。こいつの管理下にファイルとかを置いてやることで、そのファイルたちの変更履歴を記録することができる、と!重要ですよ!これ。
ではコミットとは?結果にコミットすんの?コミットさん?コミットとはファイルを記録しますよってことです。つまりコミットするんです!!コミットする=セーブする?みたいな感じの受け取り方してます、私。
GitHubは、よくGitとGitHubを混同されがちらしいんですけど、Gitの機能を使って便利にいろいろできるようにされたWebサービスのことなんです。GitHubには世界中のあらゆるデータやソースコード、デザインデータとかが保存公開されてるんですね。何よりもチーム開発ではこいつが役に立つそうで、カリキュラムにも取り入れられてるんですよね。
そして今日はGitHubの会員登録を済ませて、エラーが出て、ここまでにするかーってなりました。いやいやちゃんと考えたんですけど分からなくって。続きはまた明日です。
今日は勉強全然できなくて遅れに遅れまくってるんで明日こそは進めたい。
おやすみなさい。