Ruby on Rails で動くプロジェクト管理ツール「Redmine」をWindowsにインストールします。

DBにSQLite、WebサーバにMongrelを使用し、MongrelはWindowsのサービスとして起動させています。

環境
・Windows Server 2008 R2
・ActiveScriptRuby 1.8.7(p249)
・SQLite 3.6.22
・Redmine 0.9.1

 

1.Rubyインストール

ActiveScriptRuby からmsiファイルをダウンロードして実行。ウィザードに従いインストールします。
※今回はインストール先を「C:\ruby\」に変更しています。

インストール後、システム環境変数の「Path」の最後に「;C:\ruby\bin」を追加します。

ActiveScriptRuby
http://arton.hp.infoseek.co.jp/indexj.html

 

2.Ruby on Rails のインストール

コマンドプロンプトを起動し、下記コマンドを実行します。

gem install rails

 

3.RedCloth のインストール

Wiki で Textile を使用するため 下記コマンドを実行し、RedCloth をインストールします。

gem install RedCloth

 

4.DBの準備

今回はSQLiteを使用しますので、sqlite3を使えるようにします。

SQLite 公式サイト から Windows用バイナリファイルの sqlitedll をダウンロードし展開し、sqlite3.dllをパスの通ったフォルダにコピーします。
※今回は、システムフォルダ(C:\Windows\SysWOW64)にコピーしています。

SQLite 公式サイト
http://www.sqlite.org/

普通に「gem install sqlite3-ruby」でインストールするとエラーが発生するので、下記コマンドを実行し、riとrdocを除いてインストールします。

gem install sqlite3-ruby --no-ri --no-rdoc

 

5.Redmine のインストール

5.1.ダウンロード

下記のサイトからダウンロードします。
http://rubyforge.org/frs/?group_id=1850

5.2.ダウンロードしたファイルを展開し「c:\inetpub\redmine」にコピーします。

5.3.「redmine\config」にあります「database.yml.example」を参考にして、「database.yml」を作成します。

例)database.yml

production:
  adapter: sqlite3
  database: db/redmine.db
 
development:
  adapter: sqlite3
  database: db/redmine_development.db

test:
  adapter: sqlite3
  database: db/redmine_test.db

5.4.セッション暗号化用鍵を生成します。下記コマンドを実行します。

cd c:\inetpub\redmine
rake config/initializers/session_store.rb

5.5.データベースの初期化を行います。下記コマンドを実行します。

cd c:\inetpub\redmine
rake db:migrate RAILS_ENV=production
rake load_default_data RAILS_ENV=production

 

6.RedmineをWindowsサービスで稼働

6.1.Mongrelのインストール

Windowsサービスとして稼働する「mongrel_service」をインストール。下記コマンドを実行します。

gem install mongrel_service

6.2.Redmineをサービスへ登録

Redmine をサービスへ登録。下記コマンドを実行します。

mongrel_rails service::install -N "Redmine" -c c:\inetpub\redmine -p 3000 -e production
※ポート番号:3000, productionモードで登録

6.3.Redmine サービスの開始

下記のコマンドを実行し、登録したサービスを開始します。

net start Redmine

 

7.確認

ブラウザで http://localhost:3000/ にアクセスすると確認できます。ログインをクリックして、ユーザー名「admin」、パスワード「admin」でログインして使用できます。

001

 

参考サイト

Redmineのインストール
http://redmine.jp/tech_note/install/

redmineインストール・Windows Server + IIS編CommentsAdd Star
http://d.hatena.ne.jp/kamataro/20090519/1242750188

LINQ to Twitter を使って、投稿、削除、検索します。

投稿は UpdateStatus メゾットを使用します。

using System;
using System.Collections.Generic;
using System.Linq;
using LinqToTwitter;

class Program
{
	static void Main(string[] args)
	{
		ITwitterAuthorization auth = new UsernamePasswordAuthorization() 
		{ 
			UserName = "USERNAME", 
			Password = "PASSWORD" 
		};
		using (TwitterContext twitterCtx = new TwitterContext(auth, "https://twitter.com/", "http://search.twitter.com/"))
		{
			auth.SignOn();

			// 投稿する
			var tweet = twitterCtx.UpdateStatus("投稿する内容です");

			auth.SignOff();
			Console.ReadLine();
		}
	}
}

削除は DestroyStatus メゾットを使用します。下記コードは、投稿内容が「テスト」となっているものを削除しています。

var tweets = from tweet in twitterCtx.Status
	where tweet.Type == StatusType.Friends && 
		tweet.Text == "テスト"
	select tweet;

foreach (var tweet in tweets)
{
	var status = twitterCtx.DestroyStatus(tweet.StatusID);
}

検索は、Search メゾットを使用します。下記コードは、検索キーワード「ff13」で最初の3件を取得しています。

var queryResults = from search in twitterCtx.Search
	where search.Type == SearchType.Search &&
		search.Query == "ff13" &&
		search.Page == 1 &&
		search.PageSize == 3
		select search;

foreach (var search in queryResults)
{
	Console.WriteLine("Query: " + search.Query);
	Console.WriteLine();

	foreach (var entry in search.Entries)
	{
		Console.WriteLine("AuthorName: " + entry.Author.Name);
		Console.WriteLine("AuthorURI : " + entry.Author.URI);
		Console.WriteLine("Content   : " + entry.Content);
		Console.WriteLine("Published : " + entry.Published);
		Console.WriteLine();
	}
}

今回もLINQ to Twitterを使って、自分のタイムラインを取得します。

前回、ユーザー名とパスワードでの認証したので、今回は認証にOAuthを使用していますが、LinqToTwitterDemo の InitializeOAuthConsumerStrings をそのまま使用しているだけです。

準備

1.「Applications Using Twitter」にアクセスし、「Register a new application ≫」をクリックしてアプリケーションを登録します。

2.アプリケーションの内容を適当に入力して、今回はコンソールアプリでテストしますので「Application Type」は「Client」を選択し、「保存する」をクリックします。

3.「Consumer key」と「Consumer secret」が表示されるのでメモっておきます。

4.プロジェクトを作成し、「LinqToTwitter.dll」を参照に追加します。

5.アプリケーション構成ファイル(App.Config)を作成し、取得した「Consumer key」と「Consumer secret」を設定に追加します。

app.config

<configuration>
  <appSettings>
    <add key="twitterConsumerKey" value="[Consumer key]" />
    <add key="twitterConsumerSecret" value="[Consumer secret]" />
  </appSettings>
</configuration>

 

サンプルコード(C#)

using System;
using System.Linq;
using LinqToTwitter;
using System.Configuration;

class Program
{
    // 認証
    private static void InitializeOAuthConsumerStrings(TwitterContext twitterCtx)
    {
        var oauth = (DesktopOAuthAuthorization)twitterCtx.AuthorizedClient;
        oauth.GetVerifier = () =>
        {
            Console.WriteLine("Next, you'll need to tell Twitter to authorize access.\nThis program will not have access to your credentials, which is the benefit of OAuth.\nOnce you log into Twitter and give this program permission,\n come back to this console.");
            Console.Write("Please enter the PIN that Twitter gives you after authorizing this client: ");
            return Console.ReadLine();
        };

        if (oauth.CachedCredentialsAvailable)
        {
            Console.WriteLine("Skipping OAuth authorization step because that has already been done.");
        }
    }

    static void Main(string[] args)
    {
        ITwitterAuthorization auth = new DesktopOAuthAuthorization();
        TwitterContext twitterCtx = new TwitterContext(auth, "https://twitter.com/", "http://search.twitter.com/");

        InitializeOAuthConsumerStrings(twitterCtx);

        auth.SignOn();

        // タイムラインを取得して出力
        var tweets = from tweet in twitterCtx.Status
                     where tweet.Type == StatusType.Friends
                     select tweet;

        foreach (var tweet in tweets)
        {
            Console.WriteLine("User Name: {0}, Tweet: {1}",
                tweet.User.Name,
                tweet.Text);
        }

        twitterCtx.Dispose();

        Console.ReadLine();
    }
}

 

実行

1.初回実行時にブラウザが起動し、「ユーザー名やメールアドレス」と「パスワード」の入力ページが表示されますので、入力して「許可する」をクリックします。

201s

2. ページが移動して番号が表示されますので、表示された番号をコンソールに入力します。

202s

203s

3.認証が通ればタイムラインを取得しコンソールに出力されます。

.NETからTwitterのAPIを使用するLINQ Provider(LINQ to Twitter)を使ってみます。今回は、ユーザー名とパスワードで認証して自分のタイムラインを取得しています。

LINQ to Twitter - Code Plex
http://linqtotwitter.codeplex.com/
今回はLINQ to Twitter Beta v2.0.7をダウンロードして使用

 準備

1.Twitterのアカウントを取得します。

2.「LINQ to Twitter」をダウンロードして展開、「LinqToTwitter\bin\Release」の中にある「LinqToTwitter.dll」を適当な場所にコピーします。

3.プロジェクトを作成し、「LinqToTwitter.dll」を参照に追加します。

サンプルコード(C#)

using LinqToTwitter;
static void Main(string[] args)
{
	// 認証
    ITwitterAuthorization auth;
    auth = new UsernamePasswordAuthorization() { UserName = "USERNAME", Password = "PASSWORD" };
    TwitterContext twitterCtx = new TwitterContext(auth, "https://twitter.com/", "http://search.twitter.com/");
    auth.SignOn();

    // タイムラインを取得して出力
    var tweets = from tweet in twitterCtx.Status
                 where tweet.Type == StatusType.Friends
                 select tweet;

	foreach (var tweet in tweets)
    {
    	Console.WriteLine("User Name: {0}, Tweet: {1}",
        		tweet.User.Name,
                tweet.Text);
	}
    twitterCtx.Dispose();
    Console.ReadLine();
}

SQL Server 2008 の SQL Server Management Studio(SSMS) では、デフォルトの設定だとテーブルの再作成を必要とする変更を保存できません。

000

上記のメッセージに記載されているようにオプションが有効になっていますので、テーブルの再作成を必要とする変更を保存する場合は無効にする必要があります。

1.メニューの「ツール」→「オプション」でオプションダイアログを開きます。

2.左側のメニューにある「Designers」→「テーブルデザインおよびデータベースデザイナ」を選択します。

3.右側の「テーブルの再作成を必要とする変更を保存できないようにする」のチェックを外します。

 001s

これで設定完了です。