QA@IT
«回答へ戻る

コードハイライトミスってた

64
 http://gemfile-freaks.herokuapp.com/gemfiles/1 を参考にしました。
 
 # app/models/html_with_pygments.rb 
-```ruby
+```diff
 diff --git a/app/models/html_with_pygments.rb b/app/models/html_with_pygments.rb
 index 35706eb..629a73e 100644
 --- a/app/models/html_with_pygments.rb

根本解決ではありませんが
シンタックスハイライトのgemを coderay に変更する手もあるようです。
http://gemfile-freaks.herokuapp.com/gemfiles/1 を参考にしました。

app/models/html_with_pygments.rb

diff --git a/app/models/html_with_pygments.rb b/app/models/html_with_pygments.rb
index 35706eb..629a73e 100644
--- a/app/models/html_with_pygments.rb
+++ b/app/models/html_with_pygments.rb
@@ -6,7 +6,7 @@ class HtmlWithPygments < Redcarpet::Render::HTML
   #------------#
   # コードハイライト
   def block_code( code, language )
-    Pygments.highlight( code, lexer: language, options: { encoding: 'utf-8' } )
+    CodeRay.scan(code, language).div
   end

Gemfile

diff --git a/Gemfile b/Gemfile
index c41fbae..8eb00c1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -56,4 +56,4 @@ end

 # For Markdown
 gem 'redcarpet'
-gem "pygments.rb", "~> 0.2.13"
+gem 'coderay'

Gemfile.lockは省略します。

根本解決ではありませんが
シンタックスハイライトのgemを ```coderay``` に変更する手もあるようです。
http://gemfile-freaks.herokuapp.com/gemfiles/1 を参考にしました。

# app/models/html_with_pygments.rb 
```diff
diff --git a/app/models/html_with_pygments.rb b/app/models/html_with_pygments.rb
index 35706eb..629a73e 100644
--- a/app/models/html_with_pygments.rb
+++ b/app/models/html_with_pygments.rb
@@ -6,7 +6,7 @@ class HtmlWithPygments < Redcarpet::Render::HTML
   #------------#
   # コードハイライト
   def block_code( code, language )
-    Pygments.highlight( code, lexer: language, options: { encoding: 'utf-8' } )
+    CodeRay.scan(code, language).div
   end
```

# Gemfile
```diff
diff --git a/Gemfile b/Gemfile
index c41fbae..8eb00c1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -56,4 +56,4 @@ end
 
 # For Markdown
 gem 'redcarpet'
-gem "pygments.rb", "~> 0.2.13"
+gem 'coderay'
```

Gemfile.lockは省略します。

回答を投稿

根本解決ではありませんが
シンタックスハイライトのgemを coderay に変更する手もあるようです。
http://gemfile-freaks.herokuapp.com/gemfiles/1 を参考にしました。

app/models/html_with_pygments.rb

diff --git a/app/models/html_with_pygments.rb b/app/models/html_with_pygments.rb
index 35706eb..629a73e 100644
--- a/app/models/html_with_pygments.rb
+++ b/app/models/html_with_pygments.rb
@@ -6,7 +6,7 @@ class HtmlWithPygments < Redcarpet::Render::HTML
   #------------#
   # コードハイライト
   def block_code( code, language )
-    Pygments.highlight( code, lexer: language, options: { encoding: 'utf-8' } )
+    CodeRay.scan(code, language).div
   end

Gemfile

diff --git a/Gemfile b/Gemfile
index c41fbae..8eb00c1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -56,4 +56,4 @@ end

 # For Markdown
 gem 'redcarpet'
-gem "pygments.rb", "~> 0.2.13"
+gem 'coderay'

Gemfile.lockは省略します。

根本解決ではありませんが
シンタックスハイライトのgemを ```coderay``` に変更する手もあるようです。
http://gemfile-freaks.herokuapp.com/gemfiles/1 を参考にしました。

# app/models/html_with_pygments.rb 
```ruby
diff --git a/app/models/html_with_pygments.rb b/app/models/html_with_pygments.rb
index 35706eb..629a73e 100644
--- a/app/models/html_with_pygments.rb
+++ b/app/models/html_with_pygments.rb
@@ -6,7 +6,7 @@ class HtmlWithPygments < Redcarpet::Render::HTML
   #------------#
   # コードハイライト
   def block_code( code, language )
-    Pygments.highlight( code, lexer: language, options: { encoding: 'utf-8' } )
+    CodeRay.scan(code, language).div
   end
```

# Gemfile
```diff
diff --git a/Gemfile b/Gemfile
index c41fbae..8eb00c1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -56,4 +56,4 @@ end
 
 # For Markdown
 gem 'redcarpet'
-gem "pygments.rb", "~> 0.2.13"
+gem 'coderay'
```

Gemfile.lockは省略します。