ラベル RubyOnRails の投稿を表示しています。 すべての投稿を表示
ラベル RubyOnRails の投稿を表示しています。 すべての投稿を表示

2016年5月3日火曜日

RubyMine でコントローラを作るときに spring 関連のエラーになる

RubyMine からコントローラの作成などをしようとするが、「`to_specs’: Could not find ‘spring’」こんな感じのエラーが出て作成できない。
実際に発行されているコマンドを見ると
 
.../awesome_events/vendor/bundle/ruby/2.2.0/bin/spring rails generate controller welcome index -s

となっている。

メッセージにも、コマンドにも spring とあるので、spring 関連は明白。

エラーメッセージには spring がインストールされているか確認せよ!とあるので、 Gemfile を見るが記述はあるし、インストールフォルダも存在するのでインストールはできている。
他の spring が関係しているのか? と思い停止(bin/spring stop)などをしてみるが変化ない。

そもそも、bundler 経由での rails コマンドのはずが一切無視されているのが非常に気になる。 ターミナルを使って、コントローラの生成をしてみると上手くいく。

RubyMine の Run > Edit Configurations… の関連しそうな項目(Ruby とか Rails とか)の bundler タブの Run the script … にチェックを入れてみても変わらず(一体どうなってんの???)

色々と探ってみた所、どうやら spring の設定は、Preferences の Languages & Frameworks > Ruby SDK and Gems の設定に引っ張られるようで、この項目に指定してある rbenv の右の窓にある gem 群に spring がないとダメみたい。

“+” ボタンを押して、大量に出る gem の中から spring を探しだし(なぜここには検索窓が無いのか?)、インストールすることで、コントローラ生成コマンドが動くようになった。




しかし、bundle install の設定はいつ効いてくるのだろうか・・・
(rbenv 2.2.3 にも spring がなかったので同様のエラーが出るかと期待したけど、この環境で作った場合には spring を使わないようになっていた。正直意味不明。一体どこで指定するのだろうか。)

この手の環境で悩まされるのを解消するためもあって IDE を使っているのだが、逆に IDE の設定で悩むとは本末転倒な気がしてならない。
動き始めると便利だけど、ちょっとしんどい。

2013年10月30日水曜日

Rails 参考サイト

Rails の習得サイトは数あれど、以下のページが大変参考になった。

Ruby on Rails チュートリアル 
実例を使ってRailsを学ぼう Michael Hartl (マイケル・ハートル)
http://railstutorial.jp/

読み流し等では若干厳しいが、RSpec でのテストや、heroku での動作確認等々非常色々な情報があり、進めていて飽きがこなかったのが良かった。

慣れなのかも知れないが、Rails は難しいな。



[アプリ紹介]
簡単操作で素早く通話!!
「Smart Speed Dialer」
AppStore で、販売開始!
ただ今、PromoBook さんでプロモーションコード配布中!!



2013年10月20日日曜日

rails バージョン指定の新規作成でエラーが出る

Rails をバージョン指定してインストールしようとすると、以下のエラーが出た。
    $ rails _3.2.14_ new depot
    /.../.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems.rb:273:in `bin_path':
        can't find gem rails (["3.2.14"]) with executable rails (Gem::GemNotFoundException)
        from /.../.rbenv/versions/2.0.0-p247/bin/rails:23:in `<main>'
どうやら、「railties」を更新すれば良いらしい。
(このログは、更新(update)のはずが、インストールコマンドとなって、置き換え処理してしまった)
    $ gem install railties
    railties's executable "rails" conflicts with rails
    Overwrite the executable? [yN]  y
    Successfully installed railties-4.0.0
    Parsing documentation for railties-4.0.0
    Installing ri documentation for railties-4.0.0
    Done installing documentation for railties after 0 seconds
    1 gem installed
    
    $ rails _3.2.14_ new depot
          create  
          create  README.rdoc
          create  Rakefile
          create  config.ru
          ...
          create  vendor/plugins/.gitkeep
             run  bundle install

RailsによるアジャイルWebアプリケーション開発 第4版のサンプルアプリ(Rails3.1)でのアセットパイプラインが動かない?

「RailsによるアジャイルWebアプリケーション開発 第4版」を購入して、サンプルコードを入力して行く物の、6章 - 項目2 の CSS(SCSS) の部分の反映が上手く出来ない。

一応、本のそのままでの環境としたので、Rails は 3.1 での作成となり、今となっては古いが一応アセットパイプラインが採用されたバージョンと言うことにはなっている。

確認するポイントしては、app/views/layouts/application.html.erb のタグの呼び出し部分
    <%= stylesheet_link_tag "application" %>
app/assets/stylesheets/application.css の呼び出し部分部分
    //= require_tree .
config/application.rb の設定
    config.assets.enabled = true
これらを確認してみたが、どれも間違っている気配はない。

ちなみに、css の呼び出し部に個別にファイル名を指定すると css 反映されるけど、これじゃあ意味がない。
    <%= stylesheet_link_tag "application", "products" %>
Google 等で検索するが、プリコンパイルをやり直してみたら?とかあるけど、今のところ開発環境なので意味がない(実際にやってみたけど意味なかった)。

お手上げ状態で、途方にくれていたが、本のサンプルダウンロードでは、どうなのか?と思い、サイトから入手して動作を見たところ、結果変わらずだった。

「ネット上のサンプルも結果一緒ならしょうがないよねっ!」

っていうのもどんなもんだろうか?ただ気になるが、今のスキルでは解決出来そうもなかった。
ひとまず 3.2 系にしてみようと実施した所、上手く CSS が効いている。。。
(Gemfile の Rails のバージョンを 3.2 系にするのと、他に使用する sass-rails, coffee-rails のバージョンも 3.2 系にして bundle update とした)

無理やり感があるが今回は、ひとまず 3.2 系にして進めていくこととした。

2013年10月16日水曜日

Rails コマンドを実行すると SECURITY WARNING: No secret option provided to Rack::Session::Cookie. と出る

Rails のコマンドを実行すると以下のメッセージが表示される。
    $ rails s
        SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
        This poses a security threat. It is strongly recommended that you
        provide a secret to prevent exploits that may be possible from crafted
        cookies. This will not be supported in future versions of Rack, and
        future versions will even invalidate your existing user cookies.
        
        Called from: /.../.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/actionpack-3.1.0/\
                        lib/action_dispatch/middleware/session/abstract_store.rb:28:in `initialize'.
        ...
動き的には、問題ないが警告は何となく気持ち悪い。
調べてみたところ、Rails 関係をアップデートすれば良いらしい
    $ gem update rails
    $ gem update rack
これで、大丈夫かな?と思って再度実行するが、結果変わらず。
どうやらアップデートの意味を取り違えていたようだ。
上記は、全体的なやつのアップデートで、動かそうとしているアプリで使用する Rails のアップデートにはなっていない。
これを踏まえると今回は、Gemfile に書かれてある Rails のバージョンを最新の物にすれば良いという事となる。
    $ vim Gemfile
    ...
    gem 'rails', '~>3.0.0'
    ...

    $ bundle update
    ...
これで、メッセージが出なくなった。

2013年10月8日火曜日

Capybara-webkit のインストールでエラーが出でた

Capybara-webkit を組み込む際に以下のエラーが出た。
    $ vim Gemfile
    ...
    group :developer, :test do
        ...
        gem 'capybara-webkit'
        ...
    end


    $ bundle install
    ...
    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /.../.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb 
    Command 'qmake -spec macx-g++' not available


    Gem files will remain installed in 
    /.../.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capybara-webkit-1.0.0 for inspection.
    Results logged to 
    /.../.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capybara-webkit-1.0.0/./gem_make.out

    An error occurred while installing capybara-webkit (1.0.0), and Bundler cannot continue.
    Make sure that `gem install capybara-webkit -v '1.0.0'` succeeds before
    bundling.
メッセージに書かれているとおりに、「gem install capybara-webkit -v '1.0.0'」を実行したが、結果変わらず。

調べてみると、「Qt」のインストールが必要との事。
Mac の場合は Homebrew でインストールする。
    $ brew install qt
その後、インストールすると無事完了した。
    $ bundle install
    ....
    Installing capybara-webkit (1.0.0)  ← いけた
    Using coffee-script-source (1.6.3) 
    Using execjs (2.0.2) 
    Using coffee-script (2.2.0) 
    Using thor (0.18.1) 
    Using railties (4.0.0) 
    Using coffee-rails (4.0.0) 
    Using diff-lcs (1.2.4) 
    Using gherkin (2.12.1) 
    Using hike (1.2.3) 
    Using jbuilder (1.5.1) 
    Using jquery-rails (3.0.4) 
    Using tilt (1.4.1) 
    Using sprockets (2.10.0) 
    Using sprockets-rails (2.0.0) 
    Using rails (4.0.0) 
    Using rdoc (3.12.2) 
    Using rspec-core (2.14.5) 
    Using rspec-expectations (2.14.3) 
    Using rspec-mocks (2.14.3) 
    Installing rspec (2.14.1) 
    Using rspec-rails (2.14.0) 
    Using sass (3.2.12) 
    Using sass-rails (4.0.0) 
    Using sdoc (0.3.20) 
    Using sqlite3 (1.3.8) 
    Using turbolinks (1.3.0) 
    Installing turnip (1.1.0) 
    Using uglifier (2.2.1) 
    Your bundle is complete!
    Use `bundle show [gemname]` to see where a bundled gem is installed.

2013年9月4日水曜日

Heroku の使い方

Heroku の使い方色々。
使い慣れている人には何でもない情報かもしれない。

ログイン
まずは、ログインしないとコマンドを受け付けて貰えない。

$ heroku login


ログの確認
--tail を付ける事によりリアルタイムでの確認が出来る。

$ heroku logs
$ heroku logs --tail


アプリの一覧
登録しているアプリの一覧が取得できる。

$ heroku apps 



毎回 --app と言われて困る
Gui 使っているからか?毎回コマンドを発行する度に --app でアプリを指定しろとメッセージが出る。
言われた通りにアプリ名を指定すれば良いのだろうけど、コマンド毎は流石にしんどい。
remote に設定したら不要になるらしい。
$ git remote add heroku git@heroku.com:アプリのURL.git
既に、remote になっているにかかわらず、app の入力を求められる場合は、以下のコマンドで設定することにより入力不要になる。
$ git config heroku.remote heroku

2013年9月3日火曜日

PG::Error: ERROR: invalid value for parameter "TimeZone": "UTC"

Rails 備忘録。

今やろうとしている内容が PostgreSQL を使用するものだが、PostgreSQL をインストールせずに rake をかけたら以下エラーが表示される。
$ rake db:create db:migrate db:seed
could not connect to server: Connection refused
 Is the server running on host "localhost" (::1) and accepting
 TCP/IP connections on port 5432?
could not connect to server: Connection refused
 Is the server running on host "localhost" (127.0.0.1) and accepting
 TCP/IP connections on port 5432?
could not connect to server: Connection refused
 Is the server running on host "localhost" (fe80::1) and accepting
 TCP/IP connections on port 5432?
/Users/xxxx/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/activerecord-…

ここでは、エラー内容をみると、「5432」ポートとか出ているので、PostgreSQLをインストールした事ある人なら、このポート番号でピンと来ると思う。

なので、この問題については PostgreSQL をインストールすればよい。
調べてみると、インストール方法も数種類(Postgres.app/Fink/MacPorts/Homebrew)存在するため、迷ってしまった。

今回は、app を採用。
インストールと言っても、app をダウンロードするだけ(zip→app)。
(アンインストールの時関連ファイル等をキレイに削除できるのか不明)

起動は、app を実行すれば完了らしい
(メニューバーに像のアイコンが出る) 。

この状態で、再度 rake コマンドを発行してみた。
PG::Error: ERROR:  invalid value for parameter "TimeZone": "UTC"
: SET time zone 'UTC'
/Users/xxxx/Program/Rails/passbook_rails_example-master/config/environment.rb:5:in `'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
またエラーだ。
内容としてはタイムゾーンがどうのこうのらしいが、よく分からない。
対応方法を調べると、Mac の再起動をかけると良いらしい。
う~んと思いながらも、再起動をかけると。。。上手くいった!!

これは、app を使用したからかも知れない。

Rails rake バージョン違いによるエラー

エラー内容がそのままとなるが、簡単な内容のエラーでも結構あせるので、備忘録として残す。
$ rake db:create db:migrate db:seed
rake aborted!
You have already activated rake 10.1.0, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.
/Users/tatsuosaeki/Program/Rails/passbook_rails_example-master/config/boot.rb:6:in `'
/Users/tatsuosaeki/Program/Rails/passbook_rails_example-master/config/application.rb:1:in `'
/Users/tatsuosaeki/Program/Rails/passbook_rails_example-master/Rakefile:5:in `'
(See full trace by running task with --trace)
自分が持っている rake のバージョンと、今回求められているバージョンに相違があると言う事。
アップデート処理をすると、上手くいった
$ bundle update rake

2013年8月16日金曜日

heroku で 「We're sorry, but something went wrong.」 が出る

ちょっとした確認を取りたい時用に Heroku を使えるように練習したところ、Heroku に上げてアクセスすると、「We're sorry, but something went wrong.」 が表示される。


原因は、単純で Heroku へ Push した後に、DB のマイグレーションをかける必要が有ったのだが、その手順を見逃していただけ。

Windows なら、git で push 後に、heroku コマンド(toolbelt) を使用してログイン後、マイグレーションを行う
heroku login
heroku run db:migrate
heroku open
ただ、ここに辿り着くまでが長かった。
自分が悪いのだが、焦って掻い摘んで情報を見るため、今回の部分をスルーしてエラーメッセージで追いかけ、結果的にどんどん訳の分からない方向へ飛んでいく(そらそうだ、他の方たちは正攻法でダメな状態からの情報なのだから)。

毎度の事ながら、落ち着いてしっかりと情報を見て、把握して作業を行う事が重要と思った。

2013年8月14日水曜日

Rails 4 のアンインストール

Rails の勉強とサイトや本を見ながら動かしているが、全くをもって初歩の段階でエラーが出てしまった。
D:\Program\data\books>rails s
=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.0.0/lib/action_dispatch/routing
/mapper.rb:191:in `normalize_conditions!': You should not use the `match` method
 in your router without specifying an HTTP method. (RuntimeError)
If you want to expose your action to both GET and POST, add `via: [:get, :post]`
 option.
If you want to expose your action to GET, use `get` in the router:
  Instead of: match "controller#action"
  Do: get "controller#action"
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.0.0/lib/action_dis
...
どうやら、Rails 4 系から match メソッドがこれまで通りでは動かないように変更されたらしい。
対応するには、 get でのマッチングを指定か、via を使っての指定を行わないとダメなようだ。
3 系
match 'hello' => 'booklist#hello'
match 'bye' => 'booklist#bye'

↓

4 系
get 'hello', to: 'booklist#hello'
match 'bye' => 'booklist#bye', via: :get
習得するに当たり、今のところは、Rails 3 系の情報が多く、手持ちの書籍も 3 系のため、慣れてくるまでは、4 系 との違いを補完しながら学習するのは効率が悪い気がするので、3 系をインストールしようと思った(普通に gem からのインストールでは 4 系が入る)。

まずは、現在入っている 4 系をアンインストールしてから 3 系の最新版をインストールする。
アンインストールの際に、「gem uninstall rails」としても、アンインストールは出来ないようだ。
調べたところ railties を指定すると良いらしい。
rails -v
Rails 4.0.0
gem uninstall railties -v '4.0.0'
(gem uninstall rails ではダメ)
アンインストールが完了した後に、バージョンを指定して 3 系をインストールする。
バージョンは、公式を確認すれば良い。
Rails 本家
http://rubyonrails.org/
gem install rails -v '3.2.14'
...
rails -v ← インストール出来ているか確認
Rails 3.2.14

2013年8月13日火曜日

gem install rails でエラー

rails のインストール(gem install rails)を行うと以下のエラーが出た。

gem install rails
...
ERROR:  Error installing rails:
        The 'atomic' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
...

Devkit が古いようだ。
メッセージに書かれている通り、 http://rubyinstaller.org/downloads へ行き、http://github.com/oneclick/rubyinstaller/wiki/Development-Kit(対象となる物。)が該当する物をダウンロードしてアップデートを掛ける(今回はDevKit-tdm-32-4.5.2-20111229-1559-sfx.exeをダウンロード)。

ダウンロードしたファイルを展開し(不用意にデスクトップを展開先とすると、ファイルが散らかるので、フォルダ指定して展開する事を推奨する)、アップデート処理を行う。

まず、展開したフォルダは、アクセスしやすい場所へ移動させる。
次に、初期化のためのコマンドを発行する
ruby dk.rb init
さらに、インストール(更新?)コマンドを発行する。
と、ここでエラーが発生した。
C:\Ruby193\Devkit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Program Files/Heroku/rub
y-1.9.2'
dk.rb:86:in `rename': Permission denied - (C:/Program Files/Heroku/ruby-1.9.2/li
b/ruby/site_ruby/1.9.1/rubygems/defaults/operating_system.rb, C:/Program Files/H
eroku/ruby-1.9.2/lib/ruby/site_ruby/1.9.1/rubygems/defaults/operating_system.rb.
20130813193359) (Errno::EACCES)
        from dk.rb:86:in `update_gem_override'
        from dk.rb:260:in `block (2 levels) in install'
        from dk.rb:246:in `each'
        from dk.rb:246:in `block in install'
        from dk.rb:219:in `each'
        from dk.rb:219:in `install'
        from dk.rb:313:in `run'
        from dk.rb:332:in `
'
どうやらパーミッションがどうこう言っているようなので、コマンドプロンプトを管理者モードで起動し直して、再度コマンドを発行したら、上手くいった。

あとは、当初の目標の rails のインストールを行ったところ、上手くいった。
(ドキュメントのインストール部分でものすごく時間がかかったので、止まったかと思った。。。)
...
Parsing documentation for rails-4.0.0
Installing ri documentation for rails-4.0.0 ← ここで30分ぐらいかかった。。。
...

2013年7月30日火曜日

Ruby on Rails bundle install エラー(proxy 経由)

bundle install をするとネットワークエラーが発生。
今の環境では proxy 経由でないと、動かない
http_proxy=http://example.com:port bundle install
これで、上手くいった。