Rails Tutorial 6章

minitest-reportersと(結局)guardを入れました。
じゃぁということでterminal-notifier-guardも入れて通知領域にguardの結果が表示されます。

guardよいですね。Emacsのモードラインが赤くなったり緑になったり大変気持ち良い

仕事ではJava書いてますけどやっぱrubyは良いです。

Gemfile
group :development, :test do
  # Use sqlite3 as the database for Active Record
  gem 'sqlite3','1.3.11'
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug','9.0.0', platform: :mri
  gem 'rails-controller-testing'
  gem 'minitest-reporters',       '1.1.9'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
  gem 'terminal-notifier-guard', '~> 1.6.1'
end
Guardfile
# Guardのマッチング規則を定義
guard :minitest, spring: "bin/rails test", all_on_start: false do
  watch(%r{^test/(.*)/?(.*)_test\.rb$})
  watch('test/test_helper.rb') { 'test' }
  watch('config/routes.rb')    { integration_tests }
  watch(%r{^app/models/(.*?)\.rb$}) do |matches|
    "test/models/#{matches[1]}_test.rb"
  end
  watch(%r{^app/controllers/(.*?)_controller\.rb$}) do |matches|
    resource_tests(matches[1])
  end
  watch(%r{^app/views/([^/]*?)/.*\.html\.erb$}) do |matches|
    ["test/controllers/#{matches[1]}_controller_test.rb"] +
    integration_tests(matches[1])
  end
  watch(%r{^app/helpers/(.*?)_helper\.rb$}) do |matches|
    integration_tests(matches[1])
  end
  watch('app/views/layouts/application.html.erb') do
    'test/integration/site_layout_test.rb'
  end
  watch('app/helpers/sessions_helper.rb') do
    integration_tests << 'test/helpers/sessions_helper_test.rb'
  end
  watch('app/controllers/sessions_controller.rb') do
    ['test/controllers/sessions_controller_test.rb',
     'test/integration/users_login_test.rb']
  end
  watch('app/controllers/account_activations_controller.rb') do
    'test/integration/users_signup_test.rb'
  end
  watch(%r{app/views/users/*}) do
    resource_tests('users') +
    ['test/integration/microposts_interface_test.rb']
  end
end

途中で一度Springを全部殺すというのをやった。

kill `ps ax|grep spring|grep -v grep|cut -d" " -f 1`
kill `ps ax|grep spring|grep -v grep|cut -d" " -f 2`

Rails Tutorial 5章

scss初めてちゃんと触ったかも。まぁまぁ良いじゃん。単品で使う気にはならないけれど。コンパイルがめんどくさそう。Railsみたいに仕組みが上手く動いていたらとても良いですね。

結合テストで怒られたので言われたとおりにgem入れる

Error:
SiteLayoutTest#test_layout_links:
NoMethodError: assert_template has been extracted to a gem. To continue using it,
        add `gem 'rails-controller-testing'` to your Gemfile.
    test/integration/site_layout_test.rb:9:in `block in <class:SiteLayoutTest>'

testがわからんからサイトよんだ

昔はRspecだった気がするのだけれど。
railsguides.jp

むかしはguardかけてGrowlに出すとかに血道を上げていたけど、いまはもう、`rails test`って普通に叩いて満足だもんな。

Rails Tutorial 2章~3章

croud9とか使ってないんじゃ。
rvmで2.4入れてるんじゃ。
rubyの界隈では最新に追いついておくのが定石。
最新でウガーっとうなるのがよくあるパターン。
コミュニティが活発なのでなんとかなる。
この場合、
github.com
これ食らう。

そこでGemfileをtutorialからちといじる

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '5.0.1'
# Use Puma as the app server
gem 'puma', '3.4.0'
# Use SCSS for stylesheets
gem 'sass-rails', '5.0.6'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '3.0.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '4.2.1'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails','4.1.1'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '5.0.1'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '2.4.1'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Use sqlite3 as the database for Active Record
  gem 'sqlite3','1.3.11'
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug','9.0.0', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '3.3.1'
  gem 'listen', '3.0.8'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring','1.7.2'
  gem 'spring-watcher-listen', '2.0.0'
end

group :production do
  gem 'pg','0.18.4'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

5.0.1で治らんというひともいるけど我が環境では治った。

成果物
Home | Ruby on Rails Tutorial Sample App

cloud9ちょっと昼休みに使ったけどコレすごい良いね。
Emacsいらんやんとおもったり。

Emacsには
qiita.com
qiita.com
を入れて現代風。
flymakeは古いんじゃー。まだ設定ファイルに残っているけど。整理しなきゃだね。

rails tutorial 5対応版を始めます

久々にRailsでも触ってみるかーと。
Railsの歴史的意義は終わったと思っているけれど、色々魅力的なフレームワークではある。Coffeeとか(今や)ニッチな方言覚えたくないけれど。

いつも間にか日本語版の翻訳がかなりすごいことになっているので今回は日本語版でやることにしました。
やっぱりね、英語、苦手だから。

一章終了。所要時間30分未満。日本語は英語より得意です。
Cloud9とかでやる感じになっているけれど老害な私はEmacs + iTermで。
herokuへのデプロイが異常に楽になってる感じします。もっと昔(Rails3の頃)は苦労したはず。
というかherokuのcliを入れた記憶がないが入っていた。なぞ。入れた記憶ないが。。*1
スカッといけて拍子抜け。

あのころよりも記憶を遡ってみれば内容が良くなっている部分があって、gemのバージョンをガッチガッチに指定しているところがサクッと進められる原因なんだろうな、と思います。

railsはどう進歩しているのだろう。次からが楽しみです。

いや、routes.rb変更したら再起動必要だった気がするんだけれど即座に反映されるしなんか変更あったのかな。

*1:前の個人プロジェクトがherokuで動かしてるからその時かな。。

Common IO

便利。

String str = FileUtils.readFileToString(new File("test.txt"), "utf-8");
List<String> list = FileUtils.readLines(new File("test.txt"), "utf-8");

追記 2017/02/04

d.hatena.ne.jp

[引用]
package com.sample.foo.bar.baz;

import java.io.File;

public class GetCurrentPath {

	/** カレントパッケージ */
	private static final String CURRENT_PACKAGE = GetCurrentPath.class.getPackage().getName();
	
	/** カレントディレクトリ */
	private static final String CURRENT_PATH = new File("").getAbsolutePath();

	public static void main(String[] args) {
		System.out.println(CURRENT_PACKAGE);
		System.out.println(CURRENT_PATH);
	}
}

コレ使えばいろいろ更に楽できそう。

RubyというかRailsの開発環境2017 ~結局Emacsだった~

最初はEmacs捨てたかった。
補完が欲しかった
Eclipse+Aptanaためした。
標準メソッドの補完は良かったけど自分で作ったクラスのメソッド補完はだめだった。
NetBeans試した
標準メソッドの補完は良かったけど自分で作ったクラスのメソッド補完はだめだった。
状況は一緒。
RubyMineは試していない。お高いもの。仕事でrubyWEBサービスバリバリ使うわけではないのでちょっと手が出ない。多分良いのだろうけど。

それは昔、rsenseと言うものがEmacsにあってね、なかなか良かったのだけれど開発止まっているっぽい。
一応、forkして?やっている人がいるっぽいけど
github.com
まぁ、Javaが必要だったり大変。

codeout.hatenablog.com
こういうの見つけて、
自分で作ったクラスのメソッド補完が効くのでこれで良しとする。
Emacsキーバインド最高だしね!
rubyのダックタイピングがあるから実のところお馬鹿なauto-completeと相性良かったりする。
結局Emacs
されど補完の効くEmacs。最強。
ダンではないけれどanythingとrinariもあるしまぁ、いい感じ。
設定ファイルに古いrubyプラグインてんこ盛りなのでちょっとなんとかしたいところではある。

Java1.6のファイルの読み込みなー

        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(resourceNatureOfInquiry), "UTF-8"));
            String str = br.readLine();
            while (str != null) {
                System.out.println(str);
                m.put(str, str);
                str = br.readLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
            // do nothing
        } finally {
            try {
                br.close();
            } catch (Exception ex) {
                ex.printStackTrace();
                // do nothing
            }
        }

追記 2017/2/1

Apache commons のcommon-ioでまるっと読み込むのが正しいのかも