rack-r 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -34,16 +34,32 @@ other path given.
34
34
  Install in Rails
35
35
  ----------------
36
36
 
37
- Put the following in your Gemfile and run `bundle install` or let
38
- [Guard](https://github.com/guard/guard-bundler) kick in.
37
+ Put the following in your Gemfile and run `bundle`
39
38
 
40
- gem 'rack-r', :require => 'rack_r'
39
+ gem 'rack-r'
41
40
 
42
- In Rails 3.2 you will have to put this somewhere
43
41
 
44
- require 'rack_r/railtie'
42
+ Use the TemplateHandler
43
+ -----------------------
45
44
 
45
+ You can create partials with the extension `.rackr` which will
46
+ automatically be picked up by the middleware.
46
47
 
48
+ # render the file `_partial_with_r_code_inside.html.rackr`
49
+ render :partial => 'partial_with_r_code_inside'
50
+
51
+
52
+ Combine R with HAML
53
+ -------------------
54
+
55
+ In HAML you can combine R and Ruby via the erb filter
56
+
57
+ :erb
58
+ sql = '<%= SomeModel.select(:value).to_sql %>'
59
+ data = dbGetQuery(connect(), sql)
60
+ boxplot(data$value)
61
+
62
+ 1
47
63
  Using RackR outside of Rails
48
64
  ----------------------------
49
65
 
@@ -86,11 +102,15 @@ Alternatively to `dbi` you can use the `rodbc` package.
86
102
 
87
103
  apt-get install r-cran-rodbc
88
104
 
105
+ Install additional packages from CRAN. Note: Only the latest version
106
+ is available. Check CRAN for the latest version.
107
+
89
108
  ### YAML
90
109
 
91
110
  wget http://cran.r-project.org/src/contrib/yaml_2.1.4.tar.gz
92
111
  R CMD INSTALL yaml_2.1.4.tar.gz
93
112
 
113
+
94
114
  ### SQLite
95
115
 
96
116
  wget http://cran.r-project.org/src/contrib/RSQLite_0.11.1.tar.gz
data/lib/rack-r.rb ADDED
@@ -0,0 +1 @@
1
+ require File.expand_path(File.join(%w(.. rack_r)), __FILE__)
@@ -9,6 +9,8 @@ module RackR
9
9
 
10
10
  def call(env)
11
11
  @env = env
12
+ # reload config per request
13
+ @config = nil unless config.reload
12
14
  return call_app unless config.enabled
13
15
  return call_app if config.skip_pattern &&
14
16
  path_info.match(config.skip_pattern)
@@ -151,30 +153,35 @@ __END__
151
153
  # without a restart of your app
152
154
  #
153
155
  enabled: true
156
+ reload: false
154
157
  url_scope: /rack-r
155
158
  public_path: public/system/rack-r
156
159
  public_url: /system/rack-r
160
+ r_file: script.R
157
161
  temp:
158
162
  dir: /tmp
159
163
  prefix: rr_
160
- r_file: script.R
164
+
161
165
  r_header: |
162
166
  # modify this header in rack-r config file
163
167
  library(yaml)
164
168
  library(DBI)
165
- root <- '/home/phil/src/controlling'
169
+
170
+ root <- '<%= Dir.pwd %>'
166
171
  dbconf <- yaml.load_file(paste(root, '/config/database.yml', sep=''))$development
172
+
167
173
  connect <- function() {
168
174
  if(dbconf$adapter=='sqlite3') {
169
175
  library(RSQLite)
170
176
  dbfile <- paste(root, '/', dbconf$database, sep='')
171
177
  drv <- dbDriver("SQLite")
172
178
  return(dbConnect(drv, dbname=dbfile))
173
- } else if (dbconf$adapter=='mysql') {
179
+ } else if (dbconf$adapter=='mysql2') {
174
180
  library(RMySQL)
175
181
  return(dbConnect(MySQL(), user=dbconf$username, dbname=dbconf$database))
176
182
  }
177
183
  }
184
+
178
185
  getPapertrail <- function(model, id) {
179
186
  sql <- paste("SELECT object FROM versions WHERE ",
180
187
  "item_type='", model, "' AND item_id='",
@@ -184,19 +191,22 @@ r_header: |
184
191
  rows <- fetch(result)
185
192
  lapply(rows$object, yaml.load)
186
193
  }
194
+
187
195
  ajaxer: |
188
196
  <div class='rack_r' id='<%= key %>'>Processing R...</div>
189
197
  <script type='text/javascript'>
190
198
  var url = '<%= config.url_scope %>/<%= key %>';
191
199
  $.ajax(url, { success: function(data) { $('#<%= key %>').html(data); } });
192
200
  </script>
201
+
193
202
  templates:
194
203
  - pattern: .svg$
195
204
  process: |
196
205
  svg = File.read(src)
197
206
  template: |
198
207
  <%= svg %>
199
- - pattern: .(jpg|jpeg|png)$
208
+
209
+ - pattern: .(jpe?g|png)$
200
210
  process: |
201
211
  # TODO build dst with key, otherwise may lead to undesired results
202
212
  dst = File.join(public_path, file)
@@ -204,6 +214,7 @@ templates:
204
214
  url = "#{config.public_url}/#{file}"
205
215
  template: |
206
216
  <img src='<%= url %>' />
217
+
207
218
  - pattern: .download.csv$
208
219
  process: |
209
220
  # TODO build dst with key, otherwise may lead to undesired results
@@ -212,6 +223,7 @@ templates:
212
223
  url = "#{config.public_url}/#{file}"
213
224
  template: |
214
225
  <a href='<%= url %>'><%= file %></a>
226
+
215
227
  - pattern: .table.csv$
216
228
  process: |
217
229
  table = CSV.read(src)
@@ -225,16 +237,19 @@ templates:
225
237
  </tr>
226
238
  <% end %>
227
239
  </table>
228
- - pattern: .lazy.csv$
240
+
241
+ - pattern: .js.csv$
229
242
  process: |
230
243
  table = CSV.read(src)
231
244
  template: |
232
- <pre class="lazycsv"><%= table %></pre>
245
+ <pre class="jscsv"><%= table %></pre>
246
+
233
247
  - pattern: .Rout$
234
248
  process: |
235
249
  rout = File.read(src)
236
250
  template: |
237
251
  <pre><%= rout %></pre>
252
+
238
253
  node_regex: <script\s+type=['"]text/r['"]\s*>(.*?)</script>
239
254
  node_stanza:
240
255
  prefix: <script type='text/r'>
@@ -242,7 +257,8 @@ node_stanza:
242
257
  html:
243
258
  prefix: <div class='rack_r_out'>
244
259
  suffix: </div>
245
- #
260
+ # skip_pattern: "^/data"
261
+
246
262
  # uncomment the following two lines, if your project
247
263
  # doesn't use jquery already
248
264
  # javascripts:
@@ -1,3 +1,3 @@
1
1
  module RackR
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Phil Hofmann
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2013-05-20 00:00:00 +02:00
17
+ date: 2013-06-01 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -36,6 +36,7 @@ files:
36
36
  - RECEIPES.md
37
37
  - Rakefile
38
38
  - TODO
39
+ - lib/rack-r.rb
39
40
  - lib/rack_r.rb
40
41
  - lib/rack_r/middleware.rb
41
42
  - lib/rack_r/railtie.rb