login を盛り込むか event 編集 by ajax を盛り込むか
うーむ。とりあえず LoginEngine をいぢってみようか。とりあえず、webcalendar にマージする前に単品でアレしてみる、とゆー事で。
ちなみに相当にハマっています。続きは見ない方が良いと思います。
以前も参考にしたLoginEngineを使ってみるを見つつ作業を。
プロジェクト作成、DB の設定
LoginEngine 単品でナニなんでプロジェクトを作成
$ ruby rails/railties/bin/rails loginTest
DB も単体で。(以下は DB サーバ、とは言え環境は chroot)
$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 19 to server version: 5.0.20-Debian_1-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database logintest default character set utf8 ; Query OK, 1 row affected (0.81 sec) mysql> grant all privileges on logintest.* to yama@192.168.0.1 identified by 'yama' ; Query OK, 0 rows affected (0.74 sec) mysql> \q Bye $
config/database.yml も修正。以下に一部を。
development: adapter: mysql # database: loginTest_development database: logintest username: yama password: yama host: 192.168.0.1
login_generator は DB を SQL でナニしていたが LoginEngine は migrate なナニが用意されている、とゆー意味では (以下略
とりあえず、先に plugin を install しないと。
plugin を install
まず、download 元を決める。
$ ./script/plugin discover Cannot find gem for Rails =1.1.2: Install the missing gem with 'gem install -v=1.1.2 rails', or change environment.rb to define RAILS_GEM_VERSION with your desired version. $
げ。ナンデスカコレハ。
とりあえず確認。
$ gem -v 0.9.0 $
gem ってどうやってインストールしたんだっけ ...
# download して setup してました。
# gem install -v=1.1.2 rails Bulk updating Gem source index for: http://gems.rubyforge.org ERROR: Interrupted #
うーむ。困った。仕方が無いので gem には頼らない方法を模索してみるか。で、svn で co してみたんですが、README には探しまくった情報と同じナニが
= Installation
Installing the Login Engine is fairly simple.
Your options are:
1. Install as a rails plugin:
$ script/plugin install login_engine
2. Use svn:externals
$ svn propedit svn:externals vendor/plugins
You can choose to use the latest stable release:
login_engine http://svn.rails-engines.org/plugins/login_engine
Or a tagged release (recommended for releases of your code):
login_engine http://svn.rails-engines.org/logine_engine/tags/
There are a few configuration steps that you'll need to take to get everything r
unning smoothly. Listed below are the changes to your application you will need
to make.
うーむ。
rake rails:freeze:gems
も駄目
$ rake rails:freeze:gems (in /home/rms/loginTest) Cannot find gem for Rails =1.1.2: Install the missing gem with 'gem install -v=1.1.2 rails', or change environment.rb to define RAILS_GEM_VERSION with your desired version. rake aborted! exit /home/rms/loginTest/Rakefile:4 (See full trace by running task with --trace) $
うーむ。とりあえずバージョンとかの状態を確認
まず、svn に co したナニ
$ ruby ~/rails/railties/bin/rails -v 1.1.2 $
gem でインストールしたやつ
$which rails /usr/bin/rails $ rails -v 1.1.4 $
げ。gem のを入れなおしてみよう。
# ちなみに svn co しても 1.1.2 がオチてきました。何故だ。
# gem install rails --remote --include-dependencies Bulk updating Gem source index for: http://gems.rubyforge.org Successfully installed rails-1.1.6 Successfully installed activerecord-1.14.4 Successfully installed actionpack-1.12.5 Successfully installed actionmailer-1.2.5 Successfully installed actionwebservice-1.1.6 Installing ri documentation for activerecord-1.14.4... Installing ri documentation for actionpack-1.12.5... Installing ri documentation for actionmailer-1.2.5... Installing ri documentation for actionwebservice-1.1.6... Installing RDoc documentation for activerecord-1.14.4... Installing RDoc documentation for actionpack-1.12.5... Installing RDoc documentation for actionmailer-1.2.5... Installing RDoc documentation for actionwebservice-1.1.6... #
で、バージョン見るとウワサの 1.1.6 だな。これで再度プロジェクト作りなおしてみる。
$ rails -v 1.1.6 $ mv loginTest loginTest_1.1.2 $ rails loginTest $ mv config/database.yml config/database.yml.ORG $ cp ../loginTest_1.1.2/config/database.yml config/. $ ./script/plugin discover Add http://svn.techno-weenie.net/projects/plugins/? [Y/n]
を。動いた。
ってか、svn で co したのより gem で install した方が新しいって知らんかった。(を
で、http://svn.rails-engines.org/plugins/ を選択後、
$ ./script/plugin install engines + ./engines/CHANGELOG + ./engines/MIT-LICENSE + ./engines/README + ./engines/generators/engine/USAGE + ./engines/generators/engine/engine_generator.rb + ./engines/generators/engine/templates/README + ./engines/generators/engine/templates/init_engine.erb + ./engines/generators/engine/templates/install.erb + ./engines/generators/engine/templates/lib/engine.erb + ./engines/generators/engine/templates/licenses/GPL + ./engines/generators/engine/templates/licenses/LGPL + ./engines/generators/engine/templates/licenses/MIT + ./engines/generators/engine/templates/licenses/None + ./engines/generators/engine/templates/public/javascripts/engine.js + ./engines/generators/engine/templates/public/stylesheets/engine.css + ./engines/generators/engine/templates/tasks/engine.rake + ./engines/generators/engine/templates/test/test_helper.erb + ./engines/init.rb + ./engines/lib/bundles/require_resource.rb + ./engines/lib/bundles.rb + ./engines/lib/engines/action_mailer_extensions.rb + ./engines/lib/engines/action_view_extensions.rb + ./engines/lib/engines/active_record_extensions.rb + ./engines/lib/engines/dependencies_extensions.rb + ./engines/lib/engines/migration_extensions.rb + ./engines/lib/engines/ruby_extensions.rb + ./engines/lib/engines/testing_extensions.rb + ./engines/lib/engines.rb + ./engines/tasks/deprecated_engines.rake + ./engines/tasks/engines.rake + ./engines/test/action_view_extensions_test.rb + ./engines/test/ruby_extensions_test.rb $ ./script/plugin install login_engine + ./login_engine/CHANGELOG + ./login_engine/README + ./login_engine/app/controllers/user_controller.rb + ./login_engine/app/helpers/user_helper.rb + ./login_engine/app/models/user.rb + ./login_engine/app/models/user_notify.rb + ./login_engine/app/views/user/_edit.rhtml + ./login_engine/app/views/user/_password.rhtml + ./login_engine/app/views/user/change_password.rhtml + ./login_engine/app/views/user/edit.rhtml + ./login_engine/app/views/user/forgot_password.rhtml + ./login_engine/app/views/user/home.rhtml + ./login_engine/app/views/user/login.rhtml + ./login_engine/app/views/user/logout.rhtml + ./login_engine/app/views/user/signup.rhtml + ./login_engine/app/views/user_notify/change_password.rhtml + ./login_engine/app/views/user_notify/delete.rhtml + ./login_engine/app/views/user_notify/forgot_password.rhtml + ./login_engine/app/views/user_notify/pending_delete.rhtml + ./login_engine/app/views/user_notify/signup.rhtml + ./login_engine/db/migrate/001_initial_schema.rb + ./login_engine/init_engine.rb + ./login_engine/install.rb + ./login_engine/lib/login_engine/authenticated_system.rb + ./login_engine/lib/login_engine/authenticated_user.rb + ./login_engine/lib/login_engine.rb + ./login_engine/public/stylesheets/login_engine.css + ./login_engine/test/fixtures/users.yml + ./login_engine/test/functional/user_controller_test.rb + ./login_engine/test/mocks/mail.rb + ./login_engine/test/mocks/time.rb + ./login_engine/test/test_helper.rb + ./login_engine/test/unit/user_test.rb $ ls vendor/plugins/ engines login_engine $
試験するには smtp なサービスが必要という事で適当に exim4 を設定。
# dpkg-reconrigure exim4-config
準備
まず、以下を追加、とありますので修正。
config/environment.rb
# Include your application configuration below module LoginEngine config :salt, "my-salt" config :email_from, "webmaster@localhost" config :admin_email, "root@localhost" config :app_name, "loginTest" end Engines.start :login
vendor/plugin/login_engine/lib/login_engine.rb を参照、ともある。別途確認。
次は app/controllers/application.rb だそうな。アプリ全体に認証をかけるとの事にてここに before_filter 使ってナニしてますな。
app/controllers/application.rb
# Likewise, all the methods added will be available for all controllers. require 'login_engine' class ApplicationController < ActionController::Base include LoginEngine helper :user model :user before_filter :login_required end
ここも色々と変化球な設定が可能なようだが、確認は別途。
app/helpers/application_helper.rb にも修正が必要との事。
app/helpers/application_helper.rb
# Methods added to this helper will be available to all templates in the application. module ApplicationHelper include LoginEngine end
次は ActionMailer との事。とりあえず、config/environments/development.rb の末端に以下を追加。
config/environments/development.rb (一部のみ)
ActionMailer::Base.server_settings = { :address => "localhost", :domain => "localhost", :port => 25 }
で、migrate によるテーブル作成。テーブルの名前も変更は可能との事。
$ rake engine_migrate ENGINE=login (in /home/rms/loginTest) Migrating engine 'login_engine' == InitialSchema: migrating =================================================== -- create_table("users", {:force=>true}) -> 0.6679s == InitialSchema: migrated (0.6684s) ========================================== $
DB に接続して確認。こんなテーブルができていた。
mysql> desc users ; +-----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | login | varchar(80) | NO | | NULL | | | salted_password | varchar(40) | NO | | NULL | | | email | varchar(60) | NO | | NULL | | | firstname | varchar(40) | YES | | NULL | | | lastname | varchar(40) | YES | | NULL | | | salt | varchar(40) | NO | | NULL | | | verified | int(11) | YES | | 0 | | | role | varchar(40) | YES | | NULL | | | security_token | varchar(40) | YES | | NULL | | | token_expiry | datetime | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | logged_in_at | datetime | YES | | NULL | | | deleted | int(11) | YES | | 0 | | | delete_after | datetime | YES | | NULL | | +-----------------+-------------+------+-----+---------+----------------+ 16 rows in set (0.01 sec) mysql>
なんかバタバタしてるなぁ。webcalendar にマージは次で。