【Groovy/Grails Tool Suite and Git】git pullでエラー
別環境でpushしたソースを始めてpullした際にエラーが発生したのでメモ
git勉強しないとダメだなあ
1. pull。エラー発生
The current branch is not configured for pull No value for key branch.master.merge found in configuration
2. configファイル編集
eclipse 4.2×EGit環境でPush/Pullのハマりどころを回避する | mooappを参考させて頂いた
Window → Open Perspective → Git Repository Exploringを選択
プロジェクトを右クリック → Properties → Openボタンを選択。configファイルが表示される
[core] repositoryformatversion = 0 filemode = false logallrefupdates = true # 以下を追加 [branch "master"] remote = origin merge = refs/heads/master rebase = true
3. 再度pull。またもやエラー
The current branch is not configured for pull No value for key remote.origin.url found in configuration
4. 再度configファイル編集
電脳世界にダイブイン!: GitHub with Eclipseを参考させて頂いた
[core] repositoryformatversion = 0 filemode = false logallrefupdates = true [branch "master"] remote = origin merge = refs/heads/master rebase = true # 以下を追加 [remote "origin"] url = https://github.com/tezu35/grails-ec-admin.git
これでConfigure Fetch from Upstreamメニューが活性状態となる
プロジェクトを右クリック → Team → Remote → Configure Fetch from Upstream → Addボタンを選択
sourceにmを入力、候補が表示されるのでmaster → Finishボタンを選択
Save and Fetchを選択
5. 再再度pull
成功。コンフリクトしてるけど、、
grails-platform-ui-scaffolding Install package-pluginコマンドでzip作成する必要有
mintsource/grails-platform-ui-scaffolding · GitHub
scaffoldで生成するGSPファイルをGrails Plugin: Plugin Platform UI仕様にするプラグイン
platform-uiのタグに変更するの面倒なので助かる
grails install-plugin [name] [version] でインストール不可
Grails central repositoryに登録されてないので、grails install-plugin [name] [version] の指定ではインストール出来ない
http://grails.org/plugins/search?q=grails-platform-ui-scaffolding
GithubのZIPでインストール → 失敗
grails install-plugin [URL/File]でインストール。エラーが発生
$ grails install-plugin https://github.com/mintsource/grails-platform-ui-scaffolding/archive/master.zip
URLはGithubのZIPボタンから取得
これでインスト出来たら楽なんですけどね、、
コンソールログ
| Loading Grails 2.1.1 | Configuring classpath. | Environment set to development..... | Downloading zip https://github.com/mintsource/grails-platform-ui-scaffolding/archive/master.zip. Please wait... | Downloading zip https://github.com/mintsource/grails-platform-ui-scaffolding/archive/master.zip. Please wait.... | Error Zip /var/folders/k6/ntjhf80x3qd5whnvpntvfbzw0000gn/T/master.6589727975340207458.zip is not a valid plugin
ソースコピーでインストール → 失敗
マニュアルを見る限り、ソースコピーでもよさそう
scripts/InstallTemplatesPlatformUIScaffolding.groovyも含めてコピー
Now either:
Manually copy the files from the plugin's /src/templates/scaffolding folder to the root project /src/templates/scaffolding
Or install the grails-platform-ui-scaffolding plugin by referring it via a number of methods described here: http://grails.org/doc/latest/ref/Command%20Line/install-plugin.html
一応、インストールは終わったのでマニュアル通り、プラグインのテンプレートを自作プロジェクトにコピーするコマンドを実行
ファイルを認識しない?
$ grails install-templates-platform-ui-scaffolding | Loading Grails 2.1.1 | Configuring classpath | Running pre-compiled script | Script 'InstallTemplatesPlatformUiScaffolding' not found, did you mean: 1) InstallTemplatesPlatformUIScaffolding 2) InstallTemplates 3) CreateScaffoldController 4) InstallPlugin 5) UninstallPlugin > Please make a selection or enter Q to quit:
マニュアルのtypo。-ui-ではなく-uI-
原因は違うけど再度エラー発生。ソースコピーのインストールは難しそう
$ grails install-templates-platform-uI-scaffolding | Loading Grails 2.1.1 | Configuring classpath. | Environment set to development.... | Error Error executing script InstallTemplatesPlatformUIScaffolding: java.lang.NullPointerException: Cannot invoke method getURI() on null object (Use --stacktrace to see the full trace)
ソース生成したZIPでインストール → 成功
プラグインのソースからZIPを生成してみる。Grailsのverが2.1.2以外だとエラー
$ pwd /Users/tezu/Documents/workspace-ggts-3.1.0.RELEASE/grails-platform-ui-scaffolding $ grails package-plugin | Application expects grails version [2.1.2], but GRAILS_HOME is version [2.1.1] - use the correct Grails version or run 'grails upgrade' if this Grails version is newer than the version your application expects.
Grails2.1.2をダウンロード&インストール後に再度package-plugin実行。成功!
http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.1.2.zip
$ grails package-plugin | Compiling 11 source files | Compiling 136 source files | Compiling 4 source files… | Plugin packaged grails-grails-platform-ui-scaffolding-0.1.zip
grails install-plugin [URL/File]でインストール。成功!
$ grails install-plugin /Users/tezu/Documents/workspace-ggts-3.1.0.RELEASE/grails-platform-ui-scaffolding/grails-grails-platform-ui-scaffolding-0.1.zip | Loading Grails 2.1.1 | Configuring classpath. | Environment set to development..... | Installing zip grails-grails-platform-ui-scaffolding-0.1.zip..... | Installed plugin grails-platform-ui-scaffolding-0.1 | Resolving plugin JAR dependencies
テンプレートファイルのコピーも成功。grails-ec-adminがアプリケーション
$ grails install-templates-platform-uI-scaffolding | Loading Grails 2.1.1 | Configuring classpath. | Environment set to development.... sourceDir /Users/tezu/.grails/2.1.1/projects/grails-ec-admin/plugins/grails-platform-ui-scaffolding-0.1/.//src/templates/scaffolding targetDir /Users/tezu/Documents/workspace-ggts-3.1.0.RELEASE/grails-ec-admin/src/templates/scaffolding | Environment set to development..... | Platform-UI Scaffolding templates installed successfully $ pwd /Users/tezu/Documents/workspace-ggts-3.1.0.RELEASE/grails-ec-admin/src/templates/scaffolding $ ls -l total 80 -rw-r--r-- 1 tezu36 staff 4059 2 19 14:11 Controller.groovy -rw-r--r-- 1 tezu36 staff 3952 2 19 14:11 Test.groovy -rw-r--r-- 1 tezu36 staff 2189 2 19 14:11 _form.gsp -rw-r--r-- 1 tezu36 staff 989 2 19 14:11 create.gsp -rw-r--r-- 1 tezu36 staff 1519 2 19 14:11 edit.gsp -rw-r--r-- 1 tezu36 staff 2836 2 19 14:11 list.gsp -rw-r--r-- 1 tezu36 staff 11808 2 19 14:11 renderEditor.template -rw-r--r-- 1 tezu36 staff 3591 2 19 14:11 show.gsp
動作確認
Domainを生成後(Member)にgenerate-allコマンドでGSPとControllerを作成
$ grails generate-all jp.gr.java_conf.tezu.grails.ec.Member2 | Loading Grails 2.1.1 | Configuring classpath. | Environment set to development..... | Packaging Grails application.... | Compiling 1 source files | Compiling 1 source files..... | Packaging Grails application..... | Generating views for domain class jp.gr.java_conf.tezu.grails.ec.Member2 | Generating controller for domain class jp.gr.java_conf.tezu.grails.ec.Member2 | Finished generation for domain class jp.gr.java_conf.tezu.grails.ec.Member2
一覧 list.gsp
新規作成 create.gsp
詳細 show.gsp
編集 edit.gspと編集結果
削除結果
これをベースに一覧画面を検索画面に変更するなどのカスタマイズをすれば楽ですね
GA Functions(ver.1.4.2)導入 Hatena Blog
外部リンクのクリックを測定したいので、Google Analyticsにフォーム入力イベントなどを機能拡張するJavaScript「GA Functions」 | murak.netをBlogに導入
jquery.gafunc.jsを改修
理由は以下の通り
- Hatena Blogが使用しているjQueryは1.9系
<script type="text/javascript" src="http://hatenablog.com/.shared.js:87336cc98b0ace80bdafaed315d585dd:/js/jquery-1.9.0.min.js,/js/empty.js,/js/jquery-ui-1.10.0.custom.min.js,/js/jquery.cookie.js,/js/jquery.hashchange.js,/js/jquery.mousewheel.js,/js/jquery.colorbox-min.js,/js/jquery.flot.js,/js/jquery.ui.datepicker-ja.js,/js/jquery.tipsy.js,/js/jquery.Jcrop.min.js,/js/json2.js,/js/postMessage.js,/js/keyString.js,/js/jsdeferred.js,/js/EditDesign.js,/js/underscore-min.js,/js/fullscreen.js,/js/accesslog.js,/js/base.js,/js/backup.js,/js/admin.js,/js/blogs.js,/js/locale-all.js"></script> <script type="text/javascript" src="http://hatenablog.com/js/texts-ja.js?87336cc98b0ace80bdafaed315d585dd"></script>
- jquery.gafunc.jsは1.9系で廃止された.live() | jQuery API Documentationを使用
改修しないと当然エラーが発生します。Chrome Developer Toolsで確認
Uncaught TypeError: Object [object Object] has no method 'live' jquery.gafunc.min.js
jquery.gafunc.jsの改修箇所抜粋。live methodをon methodに変更
// $(q).live('click', function() { $(document).on('click', q, function() { // $('a[href^="mailto:"]').live('click', function() { $(document).on('click', 'a[href^="mailto:"]', function() { // $(q.join(',')).live('click', function() { $(document).on('click', q.join(','), function() {
手順
1. 無料レンタルサーバ(Free Web Hosting with PHP, MySQL and cPanel, No Ads)にアップロード
ログイン後、Go to CPanelを選択
File Managerを選択
/public_html配下にアップロード
2. Hatena Blogの管理画面でJSを指定
デザイン→カスタマイズ→サイドバー→モジュールを追加→HTMLで追加を選択し、以下をコピー
<script type="text/javascript" src="//tezu.uphero.com/jquery.gafuc.1.9.js"></script>
3. ブラウザで指定したJSが読み込まれることを確認
結果
コンテンツ→イベント→上位のイベント→イベントカテゴリー Outbound→セカンダリディメンション コンテンツ ページを選択
イベントアクションが外部リンク、ページが遷移元画面
Grails Platform Core siteNameTagの値はAppのConfig.groovyで変更
軽く苦戦したのでメモ。こんな簡単な変更に苦戦しているようでは悪戦苦闘の日々が続くのだろう、、
siteNameタグのリファレンス抜粋
Renders the name of the site. This is defined in config plugin.platformCore.site.name.
configって何だろ。サンプルコードが欲しい、、
デフォルト値はFile : PlatformCoreGrailsPlugin.groovy - Ohloh Code Searchに記述されている
def doWithConfigOptions = { legacyPrefix = 'grails.plugin.platform' 'organization.name'(type: String, defaultValue: 'My Corp (set plugin.platformCore.organization.name)') 'site.name'(type: String, defaultValue: 'Our App (set plugin.platformCore.site.name)')
まずは、Grails Plugin: Plugin Platform CoreをインストールしたPrivate Pluginの<plugin-name>GrailsPlugin.groovyファイルに追加してみたがダメ
def doWithConfigOptions = { 'organization.name'(type: String, defaultValue: 'My Corp (set plugin.platformCore.organization.name)') // 'site.name'(type: String, defaultValue: 'Our App (set plugin.platformCore.site.name)') 'site.name'(type: String, defaultValue: 'Grais EC Admin site.name') 'plugin.platformCore.site.name'(type: String, defaultValue: 'Grais EC Admin plugin.platformCore.site.name') 'plugin.grailsEcAdmin.site.name'(type: String, defaultValue: 'Grais EC Admin plugin.grailsEcAdmin.site.name') }
Grails Plugin: Application Infoをインストールして変数を確認。keyにplugin.grailsEcAdminが付与されている
http://localhost:8080/<app-name>/adminManage/grailsProperties
key | value |
---|---|
plugin.grailsEcAdmin.plugin.grailsEcAdmin.site.name | Grais EC Admin plugin.grailsEcAdmin.site.name |
plugin.grailsEcAdmin.plugin.platformCore.site.name | Grais EC Admin plugin.platformCore.site.name |
plugin.grailsEcAdmin.site.name | Grais EC Admin site.name |
plugin.platformCore.site.name | Our App (set plugin.platformCore.site.name) |
続いて、Private PluginのConfig.groovyに追加。これもダメ
plugin.platformCore.site.name="Grais EC Admin"
AppのConfig.groovyに追加。これがダメだったら、もう無理
// app-info plugin grails.plugins.dynamicController.mixins = [ 'com.burtbeckwith.grails.plugins.appinfo.IndexControllerMixin': 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.HibernateControllerMixin': 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.Log4jControllerMixin' : 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.SpringControllerMixin' : 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.MemoryControllerMixin' : 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.PropertiesControllerMixin' : 'com.burtbeckwith.appinfo_test.AdminManageController', 'com.burtbeckwith.grails.plugins.appinfo.ScopesControllerMixin' : 'com.burtbeckwith.appinfo_test.AdminManageController' ] plugin.platformCore.site.name="Sample Grails EC Admin"
お!value:Grais EC Adminを認識してる
TOP画面を表示。footerの値も更新された!
Grails paginateTag 1ページの行数指定(max)が有効にならない
generate-viewsコマンドで作成したlist.gspに1ページ3行を指定(max=3)
<div class="pagination"> <g:paginate max="3" total="${memberInstanceTotal}"/> </div>
有効にならない、、、
paginateのマニュアルに以下の記載があるので、param指定してみる
max (optional) - The number of records to display per page (defaults to 10). Used ONLY if params.max is empty
いけた
http://localhost:8080/sample-grails-ec-admin/member/list?max=3
create-controllerコマンドで作成したControllerが怪しい
確認してみると
def list(Integer max) { params.max = Math.min(max ?: 10, 100) [memberInstanceList: Member.list(params), memberInstanceTotal: Member.count()] }
params.maxに必ず値が代入されるから、tagの値有効にならんでしょ、、、
コメントアウトしたら解決
def list(Integer max) { // params.max = Math.min(max ?: 10, 100) [memberInstanceList: Member.list(params), memberInstanceTotal: Member.count()] }