picrate 1.2.4-java → 1.3.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ac2e940ede1e29f5b6d6e4856b945d7302487aee87dea6229c68470a32e41c4
4
- data.tar.gz: f000acd2d65cf8bea16754c2474ff48c9b22ce62a9c06637de2b64820aa166e3
3
+ metadata.gz: 674b5526a2444390b3230e1d751b737c6dd45b9d411956a1f2911f8c79c0bf18
4
+ data.tar.gz: 178aee951ab71107cb59981a6e2edea6952a80067dccb1431879edff8eb7aa32
5
5
  SHA512:
6
- metadata.gz: eed56464f6ebb5dab6881872de1bfff120cea520babe3cf3d559ec2698d018b1d5b73e914950d215cdcb2e1f28a6cc6ca28fbb94f64e19e78c6b851aa53a0f66
7
- data.tar.gz: 69c364b81095fe15803b1ab5020d1a116858edc1f0dfb7732bc9c157634f2bdf2f7b42bfccb10fd8c35855d68aeb822cc795ad9d2aac67544e43f542a72e276c
6
+ metadata.gz: 3f78af9e8a537e7a28f0e4cd31d44457566eecfee63ad97434c6e33dd70e7b29baa824c628e0f72ba50d3f0ffc77827c70923a443417cdfc5d46b1ecc76012b5
7
+ data.tar.gz: 0aae76990d4ef5a801d20f22fc177de3f4319e16e45ce426adf1bfaf6d6eb57e20287c7558fbeb2221fe8b1d3ddcb0cb11f8a60a7e535236e78d52df95a7c612
@@ -3,7 +3,7 @@
3
3
  <extension>
4
4
  <groupId>io.takari.polyglot</groupId>
5
5
  <artifactId>polyglot-ruby</artifactId>
6
- <version>0.4.3
6
+ <version>0.4.5
7
7
  </version>
8
8
  </extension>
9
9
  </extensions>
@@ -1,2 +1,2 @@
1
- distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip
2
- wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
1
+ distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2
+ wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
@@ -1,5 +1,6 @@
1
- v1.2.4 Extract picrate examples to ~/projects/examples instead of ~/picrate_samples for tighter integration with geany editor. Remove non-functioning sound library as an install option (direct toward minim as option).
1
+ v1.3.0 Last version for jdk8. But should run OK jdk11 with JRuby-9.2.11.0 and with included jogl-2.4.0-rc.
2
2
 
3
+ v1.2.4 Extract picrate examples to ~/projects/examples instead of ~/picrate_samples for tighter integration with geany editor. Remove non-functioning sound library as an install option (direct toward minim as option).
3
4
  v1.2.3 Favor latest beta Video2 library over GLVideo.
4
5
 
5
6
  v1.2.2 Removed landscape from example as too taxing for raspberryPI. Improved geany tools.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source 'https://rubygems.org'
2
- ruby '2.5.7', :engine => 'jruby', :engine_version => '9.2.9.0'
2
+ ruby '2.5.7', :engine => 'jruby', :engine_version => '9.2.11.0'
3
3
  gemspec
data/README.md CHANGED
@@ -1,13 +1,12 @@
1
1
  __C6H3N3O7__ [![Gem Version](https://badge.fury.io/rb/picrate.svg)](https://badge.fury.io/rb/picrate)![Travis CI](https://travis-ci.org/ruby-processing/PiCrate.svg)
2
2
 
3
3
  # PiCrate
4
- Version for RaspberryPI `Stretch` and `Oracle JDK8`, will probably also work on `OpenJDK11+` but see `PiCrate-2.0.0` for version targetting `Buster`.
5
- Create processing sketches in ruby on raspberry-pi and linux (this project is a parallel development of [propane][propane] targetting the raspberry-pi, but will initially be developed on a regular linux box). The aim is to produce a gem installable app that can be run with jruby, with minimal dependencies. Drop the `C` and you get pirate, or and an `e` and get `PiCreate`, a happy coincidence?
4
+ Version for RaspberryPI `Stretch` and `Oracle JDK8`, will probably also work on `OpenJDK11+`. For latest version see auto-install script for [PiCrate-2.0][buster] on Buster (tested on RaspberryPI4). Create processing sketches in ruby on raspberry-pi and linux (this project is a parallel development of [propane][propane] targetting the raspberry-pi, but will initially be developed on a regular linux box). The aim is to produce a gem installable app that can be run with jruby, with minimal dependencies. Drop the `C` and you get pirate, or and an `e` and get `PiCreate`, a happy coincidence?
6
5
 
7
6
  ### To install from rubygems ###
8
7
 
9
8
  ```bash
10
- jgem install picrate -v 1.2.3
9
+ jgem install picrate
11
10
  ```
12
11
 
13
12
  ### To Build and Test ###
@@ -19,7 +18,7 @@ Requires java to build, but uses a maven wrapper so you don't need to install ma
19
18
  ```bash
20
19
  cd PiCrate
21
20
  rake # assumes an installed version of vanilla processing
22
- jgem install picrate-1.2.3-java.gem
21
+ jgem install picrate-1.2.4-java.gem
23
22
 
24
23
  ```
25
24
  To create a template sketch:-
@@ -55,6 +54,5 @@ MySketch.new
55
54
  jruby --dev my_sketch.rb # --dev flag speeds start-up
56
55
  ```
57
56
 
58
-
57
+ [buster]:https://gist.github.com/monkstone/6ae9840d7b7008c177b4a9f589d14ec6
59
58
  [propane]:https://ruby-processing.github.io/propane/
60
- [oracle]:http://www.rpiblog.com/2014/03/installing-oracle-jdk-8-on-raspberry-pi.html
data/Rakefile CHANGED
@@ -9,15 +9,11 @@ task default: %i[init compile install test gem]
9
9
  # depends on installed processing, with processing on path
10
10
  desc 'Copy Jars'
11
11
  task :init do
12
- # for Archlinux etc
13
- # processing_root = File.dirname(`readlink -f $(which processing)`)
14
- # alternative for debian linux etc
15
- processing_root = File.join(HOME_DIR, 'processing-3.5.3')
16
- jar_dir = File.join(processing_root, 'core', 'library')
17
- opengl = Dir.entries(jar_dir).grep(/amd64|armv6hf/).select { |jar| jar =~ /linux/ }
12
+ jogl24 = File.join(HOME_DIR, 'jogl24')
13
+ opengl = Dir.entries(jogl24).grep(/amd64|armv6hf/).select { |jar| jar =~ /linux/ }
18
14
  opengl.concat %w[jogl-all.jar gluegen-rt.jar]
19
15
  opengl.each do |gl|
20
- FileUtils.cp(File.join(jar_dir, gl), File.join('.', 'lib'))
16
+ FileUtils.cp(File.join(jogl24, gl), File.join('.', 'lib'))
21
17
  end
22
18
  end
23
19
 
@@ -14,7 +14,7 @@ Get the latest version from [http://jruby.org/download][download]
14
14
 
15
15
  ```bash
16
16
  cd /opt
17
- sudo tar xzvf /pathToDownload/jruby-bin-9.2.9.0.tar.gz
17
+ sudo tar xzvf /pathToDownload/jruby-bin-9.2.11.0.tar.gz
18
18
  ```
19
19
 
20
20
  Then use the excellent `update-alternatives` tool to provide symbolic links to `jruby`, `jgem`, `jirb` and `rake` especially if you haven't installed `mri` ruby.
@@ -44,9 +44,9 @@ mkdir installer
44
44
  cd installer
45
45
  rake
46
46
  ```
47
- Currently installs jruby-9.2.9.0
47
+ Currently installs jruby-9.2.11.0
48
48
 
49
49
  If you know better please post on wiki
50
50
 
51
- [download]:"https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.9.0/jruby-dist-9.2.9.0-bin.tar.gz"
51
+ [download]:"https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.11.0/jruby-dist-9.2.11.0-bin.tar.gz"
52
52
  [rake_gist]:https://gist.github.com/monkstone/159c5a9813c9cd181040b4715e74f6b2
@@ -5,7 +5,7 @@ date: 2019-11-11 07:34:13
5
5
  categories: PiCrate update
6
6
  permalink: /getting_buster/
7
7
  ---
8
- Currently Raspbian Buster does not come with a pre-installed java. So the first step is to install a `jdk` we currently recommend installing openjdk8 (_there a complications you don't need using jdk11_) to benefit from `client` optimisations. There is a bash script [here][buster], that will install `openjdk8`, `jruby-9.2.9.0` and picrate for you.
8
+ Currently Raspbian Buster does not come with a pre-installed java. So the first step is to install a `jdk` we currently recommend installing openjdk8 (_there a complications you don't need using jdk11_) to benefit from `client` optimisations. There is a bash script [here][buster], that will install `openjdk8`, `jruby-9.2.11.0` and picrate for you.
9
9
  ```bash
10
10
  bash buster_install.sh
11
11
  ```
@@ -59,7 +59,7 @@ picrate --install # no args, install samples and geany config
59
59
  picrate -i Samples # to omit geany config
60
60
  ```
61
61
 
62
- This installs example sketches in `~/sample_sketches` and ties them into a `geany` project `picrate.geany`. It should also be possible to run sketches from the `geany` ide.
62
+ This installs example sketches in `~/projects/examples` and ties them into a `geany` project `examples.geany`. It should also be possible to run sketches from the `geany` ide.
63
63
 
64
64
  To create a template sketch from the command line:-
65
65
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PiCrate
4
- VERSION = '1.2.4'
4
+ VERSION = '1.3.0'
5
5
  end
@@ -22,15 +22,14 @@ Gem::Specification.new do |gem|
22
22
  gem.files << 'lib/jogl-all.jar'
23
23
  gem.files << 'lib/gluegen-rt-natives-linux-amd64.jar'
24
24
  gem.files << 'lib/gluegen-rt-natives-linux-armv6hf.jar'
25
- # gem.files << 'lib/gluegen-rt-natives-linux-aarch64.jar'
26
25
  gem.files << 'lib/jogl-all-natives-linux-amd64.jar'
27
26
  gem.files << 'lib/jogl-all-natives-linux-armv6hf.jar'
28
- # gem.files << 'lib/jogl-all-natives-linux-aarch64.jar'
29
27
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
30
28
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
31
29
  gem.add_development_dependency 'rake', '~> 12.3'
32
30
  gem.add_development_dependency 'minitest', '~> 5.10'
33
31
  gem.add_runtime_dependency 'arcball', '~> 1.0.1'
32
+ # geomerative + wordcram dependency since they may update to jdk11+ soon
34
33
  gem.add_runtime_dependency 'geomerative', '~> 1.1'
35
34
  gem.add_runtime_dependency 'ruby_wordcram', '~> 2.0.4'
36
35
  gem.require_paths = ['lib']
data/pom.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  project 'picrate', 'http://maven.apache.org' do
2
2
 
3
3
  model_version '4.0.0'
4
- id 'ruby-processing:picrate:1.2.4'
4
+ id 'ruby-processing:picrate:1.3.0'
5
5
  packaging 'jar'
6
6
 
7
7
  description 'An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.'
@@ -31,7 +31,7 @@ project 'picrate', 'http://maven.apache.org' do
31
31
  'polyglot.dump.pom' => 'pom.xml'
32
32
  )
33
33
 
34
- pom 'org.jruby:jruby:9.2.9.0'
34
+ pom 'org.jruby:jruby:9.2.11.0'
35
35
  jar 'org.jogamp.jogl:jogl-all:${jogl.version}'
36
36
  jar 'org.jogamp.gluegen:gluegen-rt-main:${jogl.version}'
37
37
  jar 'org.processing:video:3.0.2'
data/pom.xml CHANGED
@@ -6,12 +6,12 @@ DO NOT MODIFIY - GENERATED CODE
6
6
 
7
7
 
8
8
  -->
9
- <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
9
+ <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
10
10
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>ruby-processing</groupId>
13
13
  <artifactId>picrate</artifactId>
14
- <version>1.2.4</version>
14
+ <version>1.3.0</version>
15
15
  <name>picrate</name>
16
16
  <description>An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.</description>
17
17
  <url>http://maven.apache.org</url>
@@ -76,7 +76,7 @@ DO NOT MODIFIY - GENERATED CODE
76
76
  <dependency>
77
77
  <groupId>org.jruby</groupId>
78
78
  <artifactId>jruby</artifactId>
79
- <version>9.2.9.0</version>
79
+ <version>9.2.11.0</version>
80
80
  <type>pom</type>
81
81
  </dependency>
82
82
  <dependency>
@@ -3651,7 +3651,7 @@ public class PGraphicsOpenGL extends PGraphics {
3651
3651
  * Ported from the implementation of textCharShapeImpl() in 1.5.1
3652
3652
  *
3653
3653
  * <EM>No attempt has been made to optimize this code</EM>
3654
- *
3654
+ *
3655
3655
  * TODO: Implement a FontShape class where each glyph is tessellated and
3656
3656
  * stored inside a larger PShapeOpenGL object (which needs to be expanded as
3657
3657
  * new glyphs are added and exceed the initial capacity in a similar way as
@@ -3659,18 +3659,18 @@ public class PGraphicsOpenGL extends PGraphics {
3659
3659
  * in shape mode, then the correct sequences of vertex indices are computed
3660
3660
  * (akin to the texcoords in the texture case) and used to draw only those
3661
3661
  * parts of the PShape object that are required for the text.
3662
- *
3662
+ *
3663
3663
  *
3664
3664
  * Some issues of the original implementation probably remain, so they are
3665
3665
  * reproduced below:
3666
- *
3666
+ *
3667
3667
  * Also a problem where some fonts seem to be a bit slight, as if the
3668
3668
  * control points aren't being mapped quite correctly. Probably doing
3669
3669
  * something dumb that the control points don't map to P5's control
3670
3670
  * points. Perhaps it's returning b-spline data from the TrueType font?
3671
3671
  * Though it seems like that would make a lot of garbage rather than
3672
3672
  * just a little flattening.
3673
- *
3673
+ *
3674
3674
  * There also seems to be a bug that is causing a line (but not a filled
3675
3675
  * triangle) back to the origin on some letters (i.e. a capital L when
3676
3676
  * tested with Akzidenz Grotesk Light). But this won't be visible
@@ -5352,7 +5352,7 @@ public class PGraphicsOpenGL extends PGraphics {
5352
5352
  // showWarning() and showException() available from PGraphics.
5353
5353
 
5354
5354
  /**
5355
- * Report on anything from glError().Don't use this inside glBegin/glEnd
5355
+ * Report on anything from glError().Don't use this inside glBegin/glEnd
5356
5356
  * otherwise it'll throw an GL_INVALID_OPERATION error.
5357
5357
  * @param where
5358
5358
  */
@@ -6366,11 +6366,11 @@ public class PGraphicsOpenGL extends PGraphics {
6366
6366
 
6367
6367
 
6368
6368
  /**
6369
- * Not an approved function, this will change or be removed in the future.This
6370
- * utility method returns the texture associated to the renderer's. drawing
6371
- * surface, making sure is updated to reflect the current contents off the
6369
+ * Not an approved function, this will change or be removed in the future.This
6370
+ * utility method returns the texture associated to the renderer's. drawing
6371
+ * surface, making sure is updated to reflect the current contents off the
6372
6372
  * screen (or offscreen drawing surface).
6373
- * @return
6373
+ * @return
6374
6374
  */
6375
6375
  public Texture getTexture() {
6376
6376
  return getTexture(true);
@@ -6380,7 +6380,7 @@ public class PGraphicsOpenGL extends PGraphics {
6380
6380
  /**
6381
6381
  * Not an approved function either, don't use it.
6382
6382
  * @param load
6383
- * @return
6383
+ * @return
6384
6384
  */
6385
6385
  public Texture getTexture(boolean load) {
6386
6386
  if (load) loadTexture();
@@ -6393,7 +6393,7 @@ public class PGraphicsOpenGL extends PGraphics {
6393
6393
  * creating and/or updating it if needed.
6394
6394
  *
6395
6395
  * @param img the image to have a texture metadata associated to it
6396
- * @return
6396
+ * @return
6397
6397
  */
6398
6398
  public Texture getTexture(PImage img) {
6399
6399
  Texture tex = (Texture)initCache(img);
@@ -6419,7 +6419,7 @@ public class PGraphicsOpenGL extends PGraphics {
6419
6419
  /**
6420
6420
  * Not an approved function, test its use in libraries to grab the FB objects
6421
6421
  * for offscreen PGraphics.
6422
- * @return
6422
+ * @return
6423
6423
  */
6424
6424
  public FrameBuffer getFrameBuffer() {
6425
6425
  return getFrameBuffer(false);
@@ -6478,7 +6478,7 @@ public class PGraphicsOpenGL extends PGraphics {
6478
6478
  * This utility method creates a texture for the provided image, and adds it
6479
6479
  * to the metadata cache of the image.
6480
6480
  * @param img the image to have a texture metadata associated to it
6481
- * @return
6481
+ * @return
6482
6482
  */
6483
6483
  protected Texture addTexture(PImage img) {
6484
6484
  Texture.Parameters params =
@@ -6892,7 +6892,6 @@ public class PGraphicsOpenGL extends PGraphics {
6892
6892
  OPENGL_VERSION = pgl.getString(PGL.VERSION);
6893
6893
  OPENGL_EXTENSIONS = pgl.getString(PGL.EXTENSIONS);
6894
6894
  GLSL_VERSION = pgl.getString(PGL.SHADING_LANGUAGE_VERSION);
6895
-
6896
6895
  npotTexSupported = pgl.hasNpotTexSupport();
6897
6896
  autoMipmapGenSupported = pgl.hasAutoMipmapGenSupport();
6898
6897
  fboMultisampleSupported = pgl.hasFboMultisampleSupport();
@@ -6900,45 +6899,28 @@ public class PGraphicsOpenGL extends PGraphics {
6900
6899
  anisoSamplingSupported = pgl.hasAnisoSamplingSupport();
6901
6900
  readBufferSupported = pgl.hasReadBuffer();
6902
6901
  drawBufferSupported = pgl.hasDrawBuffer();
6903
-
6904
6902
  try {
6905
6903
  pgl.blendEquation(PGL.FUNC_ADD);
6906
6904
  blendEqSupported = true;
6907
6905
  } catch (Exception e) {
6908
6906
  blendEqSupported = false;
6909
6907
  }
6910
-
6911
6908
  depthBits = pgl.getDepthBits();
6912
6909
  stencilBits = pgl.getStencilBits();
6913
-
6914
6910
  pgl.getIntegerv(PGL.MAX_TEXTURE_SIZE, intBuffer);
6915
6911
  maxTextureSize = intBuffer.get(0);
6916
-
6917
- // work around runtime exceptions in Broadcom's VC IV driver
6918
- if (false == OPENGL_RENDERER.equals("VideoCore IV HW")) {
6919
- pgl.getIntegerv(PGL.MAX_SAMPLES, intBuffer);
6920
- maxSamples = intBuffer.get(0);
6921
- }
6922
-
6912
+ pgl.getIntegerv(PGL.MAX_SAMPLES, intBuffer);
6913
+ maxSamples = intBuffer.get(0);
6923
6914
  if (anisoSamplingSupported) {
6924
6915
  pgl.getFloatv(PGL.MAX_TEXTURE_MAX_ANISOTROPY, floatBuffer);
6925
6916
  maxAnisoAmount = floatBuffer.get(0);
6926
6917
  }
6927
-
6928
- // overwrite the default shaders with vendor specific versions
6929
- // if needed
6930
- if (OPENGL_RENDERER.equals("VideoCore IV HW")) { // Broadcom's binary driver for Raspberry Pi
6931
- defLightShaderVertURL =
6932
- PGraphicsOpenGL.class.getResource("/processing/opengl/shaders/LightVert-brcm.glsl");
6933
- defTexlightShaderVertURL =
6934
- PGraphicsOpenGL.class.getResource("/processing/opengl/shaders/TexLightVert-brcm.glsl");
6935
- } else if (OPENGL_RENDERER.contains("VC4")) { // Mesa driver for same hardware
6936
- defLightShaderVertURL =
6937
- PGraphicsOpenGL.class.getResource("/processing/opengl/shaders/LightVert-vc4.glsl");
6938
- defTexlightShaderVertURL =
6939
- PGraphicsOpenGL.class.getResource("/processing/opengl/shaders/TexLightVert-vc4.glsl");
6918
+ // Broadcom's binary drivers for Raspberry Pi don't work with PiCrate in Buster
6919
+ if (OPENGL_RENDERER.equals("VideoCore IV HW")) {
6920
+ pgl.dispose();
6921
+ System.out.println("Use FakeKMS or FullKMS video driver for P2D and P3D sketches");
6922
+ super.dispose();
6940
6923
  }
6941
-
6942
6924
  glParamsRead = true;
6943
6925
  }
6944
6926
 
@@ -13160,6 +13142,7 @@ public class PGraphicsOpenGL extends PGraphics {
13160
13142
  else if (type == PGL.TRIANGLES) primitive = TRIANGLES;
13161
13143
  }
13162
13144
 
13145
+ @Override
13163
13146
  public void end() {
13164
13147
  if (PGL.MAX_VERTEX_INDEX1 <= vertFirst + vertCount) {
13165
13148
  // We need a new index block for the new batch of
@@ -7,7 +7,7 @@ SOUND = 'sound.zip'
7
7
  SOUND_VERSION = 'v1.3.2'
8
8
  VIDEO = 'video-2.0-beta4.zip'
9
9
  VIDEO_VERSION = 'r6-v2.0-beta4'
10
- EXAMPLES = '0.5.2'
10
+ EXAMPLES = '0.5.3'
11
11
  HOME_DIR = ENV['HOME']
12
12
  LIBRARY = File.join(HOME_DIR, '.picrate', 'libraries')
13
13
  PROJECT_DIR = File.join(HOME_DIR, 'projects')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.3.0
5
5
  platform: java
6
6
  authors:
7
7
  - monkstone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-19 00:00:00.000000000 Z
11
+ date: 2020-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -209,7 +209,7 @@ files:
209
209
  - lib/jogl-all-natives-linux-amd64.jar
210
210
  - lib/jogl-all-natives-linux-armv6hf.jar
211
211
  - lib/jogl-all.jar
212
- - lib/picrate-1.2.4.jar
212
+ - lib/picrate-1.3.0.jar
213
213
  - lib/picrate.rb
214
214
  - lib/picrate/app.rb
215
215
  - lib/picrate/creators/parameters.rb