Github

Githubに登録し、リモートリポジトリ作成

git branch で、今マスターなのを確認し、

git push -u origin master

おや、エラーSSH Key
登録してなかった。


ssh-keygen -t rsa
パスフレーズは変更もできる。 ssh-keygen -p

登録し、
git push -u origin master
できました。

github.com

Git使い方メモ

##Git
sudo apt install git


#名前とメールアドレス登録
 git config --global user.name 'xxx'
 git config --global user.email 'xxx@xx.com'

 ~/.gitconfigファイルに記録される。

#~/data/railsappのリポジトリを作る。
ここで git init リポジトリの初期化

#Gitがどのように作業ディレクトリとリポジトリを認識しているか
 git status 追跡されていないファイルは全部

#監視対象にする(ステージング)
 git add ファイル名
 指定されたファイルが次回コミット(リポジトリへ反映)対象になる。

 git add . カレント以下の全てのファイルをステージする。
 git status 対象が出てくる

#addしてから間違いに気づいた場合取り消す
 git reset HEAD アンステージという

*ファイルを更新したらコミット前にgit addする。

#コミット
git commit
これで実行すると、nanoエディタが起動するので、コメントを書く。

こんなメッセージが出る。
$ git commit
[master (root-commit) a3fb0b4] first commit.
 71 files changed, 1051 insertions(+)

mオプションはメッセージを直接指定できる。
git commit -m "first commit."

*git add 時点のファイルがコミットされる。

#ログをみる
 git log
 git log --oneline #1つの履歴を1行で表示

#差分確認
 git diff ID1 ID2
 *IDはgit log で確認
 git diff HEAD 最後のコミット以降の差分

#バージョンを戻す
 コミットIDを確認し、コミットIDとファイル名を指定しgit checkout
 git log --oneline
 git checkout コミットID ファイル名

#ブランチ作成
 git branch ブランチ名

#現在作業中のブランチ確認
 git branch  #アスタリスクがつくのがそう

#ブランチ切り替え
 git checkout ブランチ名

#マージ
別のブランチでaddとcommitし、
元のmasterブランチに移動した上で、
 git merge ブランチ名

Ubuntuを入れたメモ *追記(rails サーバー立ち上がったぽい)

気になっていたUbuntu、日経LinuxにDVDがついていたので即買い、入れてみた。

必要なデータは外付HDDにコピーしているのでインストール。
日経Linuxとネットを少々参照しつつ、わりとすんなり終わる。

ちなみに、Windows8のころに4万円くらいで買ったacerのノートPCです。

Firefox(英語だったので日本語設定に変更)もLibreオフィスも入っているしOK!

次に、Rubyを入れる。

ネットからソースコードをダウンロード 2.4.1
sudo apt install yum ・・・これは必要だったのか?
そして

tar zxvf ruby-2.4.1.tar.gz
cd ruby-2.4.1
./configure
make

 

長い。

make test
sudo make install

$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

 

OK!

続いて、Railsを入れたい。

 

$ sudo gem install rails
ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

 翻訳

 

$ sudo gem install rails
エラー:ロードコマンド:install(LoadError)
そのようなファイルを読み込めません -  zlib
エラー:gemを実行中...(NoMethodError)
    定義されていないメソッド `invoke_with_build_args 'for nil:NilClass

zlibでしょうか。

sudo yum install -y zlib
有効なリポジトリーがありません。
 「yum repolist all」を実行し、所持するリポジトリーを参照してください。
 「yum-config-manager --enable <repo>」でリポジトリーを有効にできます。
$ yum repolist all
repolist: 0

 

 今日はギブアップ。

 

*追記 20170611

先日買ってた本「Bash on Ubuntu on Windows」を読む。Linux初心者なので今、役立っている。

・パッケージ情報の更新
 インターネット経由でリポジトリ(パッケージとその情報が蓄積されたインターネット上の倉庫)にあるパッケージ情報を取得してローカルデータベースが更新される。

 apt update

・システムを最新状態にアップデート
 apt upgrade


nodejs -v
sudo apt install nodejs でインストールできるよ言われる。

sudo apt install sqlite
sudo apt install ruby-railties

 

$ rails -v
Rails 4.2.7.1

とりあえず。Railsが入ったようだ。

 

Rails5でないことが気になりますが、

rails new 〜 でアプリも作成できました。

ですが、

rails server

で、ダメです。

rails server
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /home/ユーザー名/data/railbook/config/boot.rb:3:in `<top (required)>'
    from bin/rails:3:in `require_relative'
    from bin/rails:3:in `<main>'

ギブ

 

*追記 20170612

 

rails new でアプリを作ったときのメッセージをよく読んでいなかった。


         run  bundle install --local
Could not find gem 'rails (= 4.2.7.1)' in any of the gem sources listed in your
Gemfile or available on this machine.
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

翻訳

         バンドルインストールを実行する--local
あなたに記載されている宝石のソースのどれかで宝石のレール(= 4.2.7.1)を見つけることができませんでした。
Gemfileまたはこのマシンで使用可能です。
         バンドルを実行するexec spring binstub --all
bundler:コマンドが見つかりません:spring
不足しているgem実行ファイルを `bundle install`でインストールしてください

かろうじて最後の行がわかる。
やってみる。

Installing sqlite3 1.3.13 with native extensions
Using turbolinks-source 5.0.3
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/tmp/bundler20170612-5280-1ywk7ogjson-1.8.6/gems/json-1.8.6/ext/json/ext/generator
/usr/bin/ruby2.3 -r ./siteconf20170612-5280-10ce3o6.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in
/tmp/bundler20170612-5280-1ywk7ogjson-1.8.6/gems/json-1.8.6 for inspection.
Results logged to
/tmp/bundler20170612-5280-1ywk7ogjson-1.8.6/extensions/x86_64-linux/2.3.0/json-1.8.6/gem_make.out

An error occurred while installing json (1.8.6), and Bundler cannot
continue.
Make sure that `gem install json -v '1.8.6'` succeeds before bundling.

 

となりまして。

 

$ gem install json -v '1.8.6'
ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

 

続いて

 

:~/ドキュメント/ruby-2.4.1/ext/zlib$ ruby extconf.rb

 

$ make
make: *** 'zlib.o' に必要なターゲット '/include/ruby.h' を make するルールがありません.  中止.

 で、

$ sudo apt-get install ruby-dev

をして、makeしてもかわらず。。

 

**

実際の場所を見ながらMakefile書き換え

srcdir = .
topdir = /usr/local/include/ruby-2.4.0
top_srcdir = /usr/local/include/ruby-2.4.0

 

このtop〜を追記

あわせて、

zlib.o: $(top_srcdir)/ruby/ruby.h

このパスもじっさにあわせ。

 

makeするとできたようだ。

 make
compiling zlib.c
linking shared-object zlib.so

 

 いいのか。

 

gem install json -v '1.8.6'
ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

 

だめ。泣きたい。

 

*追記20170613

この投稿もあとで整理しないと見にくくなってますが、メモとして。

嬉しいことに、rails sがちゃんと動いたようです。

 

以下に書く以外にもいろいろやったのですが、何がよかったのか。

・不足しているgem実行ファイルを `bundle install`でインストールしてください

これが出たので、

bundle install

ちなみに、

qiita.comこちらを読みますと、

 

bundle installを実行すると、railsは、gemfile.lockを元にgemのインストールを行います。この時、gemfile.lockに記述されていない、且つgemfileに記述されているgemがある場合、そのgemとそのgemに関連するgemをインストール後、gemfile.lockを更新します。

 

とのこと。

なんかエラーが書いてあるっぽい文章が出てくるのですが、最後に、

 

An error occurred while installing sqlite3 (1.3.13), and Bundler cannot
continue.
Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.

 

sudo apt-get install libsqlite3-dev
をしてから、もう一回bundle install

 

Bundle complete! 12 Gemfile dependencies, 56 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

 

なんかよさげ。

$ rails s

でサーバーがあがり、

 

 の画面が!

これは確実にOKでしょう。

 

でも、Pumaかと思ってたら

$ rails s
=> Booting WEBrick

だった。

WEBrickはなんだろ、、、タイムアウト

 

 

指定した文字が何個はいっているか

def count_string(file, str)
  File.open(file, "r:Shift_JIS:UTF-8") do |io|
    count = 0
    io.each do |line|
      while line.include?(str)
        line.sub!(/#{str}/, "")
        count += 1
      end
    end
    return count
  end
end
puts count_string("count_string.txt", "事件")

Ruby書きたくなり作ってみました。指定した文字が何個あるか知るものです。
例では、count_string.txt というファイルの中に、事件 という言葉が何個入っているか調べます。

これだけのものですが、つまずいたところをメモします。
まずいきなり無限ループになったぽい。
調べてみると、line.sub!(/#{str}/, “”) を最初 line.sub!(/str/, “”)と書いていたのでした。
続いて、ファイルに日本語書くとエラーに。
これは、エンコーディングかいたらOKに。=> "r:Shift_JIS:UTF-8"
外部エンコーディングSJIS、内部エンコーディングUTF-8

scaffold で簡単に。

この前、手作りでテーブルメンテ機能を作ってみましたが、

scaffoldですぐ作れると知り、作ってみました。

f:id:rubyp:20170604162754p:plain

f:id:rubyp:20170604162803p:plain