在Jekyll中读取文件时出错

时间:2016-10-01 16:36:28

标签: ruby jekyll

我按照Jekyll中的所有说明操作:

gem install jekyll bundler
jekyll new my-awesome-site
cd my-awesome-site
bundle install
bundle exec jekyll serve

然后,当我浏览到http://localhost:4000时,命令提示符中有一个空白页面和以下错误:

Error reading file C:/Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/default.html: No such file or directory @ rb_sysopen - /Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/default.html
Error reading file C:/Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/page.html: No such file or directory @ rb_sysopen - /Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/page.html
Error reading file C:/Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/post.html: No such file or directory @ rb_sysopen - /Ruby23/lib/ruby/gems/2.3.0/gems/minima-1.2.0/_layouts/post.html

这种情况正在发生,因为我在分区D:中使用Jekyll,而Ruby安装在分区C:中。事实上,如果我在一个分区中安装所有分区都没有错误,但我更喜欢将所有项目保留在分区D:中。我认为问题出在rb_sysopen

任何解决方案?感谢。

这是我的Gemfile.lock

的一部分
PLATFORMS

- x86-mingw32

DEPENDENCIES

- jekyll (= 3.2.1)
- minima

RUBY VERSION

- ruby 2.3.1p112

BUNDLED WITH

- 1.13.2

1 个答案:

答案 0 :(得分:0)

我找到了生成网站而不会遇到错误的解决方案:只需将public class GraphFragment extends Fragment { //Various fields... //UDP Settings private UdpClient client; private String hostname; private int remotePort; private int localPort; //Use to communicate with UDPDataClass private Handler handler; private boolean listenerExists = false; private int xBound = 100000; //**Graphing Slows if xBound is TOO large** private int yBound = 5000; private boolean applyBeenPressed = false; private GraphDataSource dataSource; //Gets data from UDPDataClass private SciChartSurface plotSurface; //Graphing Surface protected final SciChartBuilder sciChartBuilder = SciChartBuilder.instance(); //Data Series containers //Perhaps it would be better to use XyySeries here? private final IXyDataSeries<Double, Double> dataSeriesSensor1 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private final IXyDataSeries<Double, Double> dataSeriesSensor2 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private final IXyDataSeries<Double, Double> dataSeriesSensor3 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private final IXyDataSeries<Double, Double> dataSeriesSensor4 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private final IXyDataSeries<Double, Double> dataSeriesSensor5 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private final IXyDataSeries<Double, Double> dataSeriesSensor6 = sciChartBuilder.newXyDataSeries(Double.class, Double.class).build(); private ArrayList<IXyDataSeries<Double,Double>> dataSeriesList = new ArrayList<>(Arrays.asList(dataSeriesSensor1,dataSeriesSensor2,dataSeriesSensor3,dataSeriesSensor4, dataSeriesSensor5, dataSeriesSensor6)); private ArrayList<Double> xCounters = new ArrayList<>(Arrays.asList(0.0,0.0,0.0,0.0,0.0,0.0)); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View frag = inflater.inflate(R.layout.graph_fragment, container, false); plotSurface = (SciChartSurface) frag.findViewById(R.id.dynamic_plot); dataSource = new GraphDataSource(); //Run the data handling on a separate thread dataSource.start(); UpdateSuspender.using(plotSurface, new Runnable() { @Override public void run() { final NumericAxis xAxis = sciChartBuilder.newNumericAxis().withVisibleRange(0,xBound).build(); final NumericAxis yAxis = sciChartBuilder.newNumericAxis().withVisibleRange(0,yBound).build(); //These are wrappers for the series we will add the data to...It contains the formatting final FastLineRenderableSeries rs1 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor1).withStrokeStyle(ColorUtil.argb(0xFF, 0x40, 0x83, 0xB7)).build(); //Light Blue Color final FastLineRenderableSeries rs2 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor2).withStrokeStyle(ColorUtil.argb(0xFF, 0xFF, 0xA5, 0x00)).build(); //Light Pink Color final FastLineRenderableSeries rs3 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor3).withStrokeStyle(ColorUtil.argb(0xFF, 0xE1, 0x32, 0x19)).build(); //Orange Red Color final FastLineRenderableSeries rs4 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor4).withStrokeStyle(ColorUtil.argb(0xFF, 0xFF, 0xFF, 0xFF)).build(); //White color final FastLineRenderableSeries rs5 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor5).withStrokeStyle(ColorUtil.argb(0xFF, 0xFF, 0xFF, 0x99)).build(); //Light Yellow color final FastLineRenderableSeries rs6 = sciChartBuilder.newLineSeries().withDataSeries(dataSeriesSensor6).withStrokeStyle(ColorUtil.argb(0xFF, 0xFF, 0x99, 0x33)).build(); //Light Orange color Collections.addAll(plotSurface.getXAxes(), xAxis); Collections.addAll(plotSurface.getYAxes(), yAxis); Collections.addAll(plotSurface.getRenderableSeries(), rs1, rs2, rs3, rs4, rs5, rs6); } }); return frag; } //This class receives the UDP sensor data as messages to its handler //Then it splices the data //Adds the data to the IXySeries //Then the UpdateSuspender updates the graph //New data arrives approx every 50 ms (around 20x a second) //Graphing slows when xAxis is increased to ~100,000 //X data is only counters...Only care about Y data public class GraphDataSource extends Thread{ public void run(){ Looper.prepare(); //Get Data from UDP Data Class when its available handler = new Handler(){ public void handleMessage(Message msg){ String sensorData = msg.getData().getString("data"); //Data receiveds if(dataValid(sensorData)){ sensorData = sensorData.replaceAll("\\s", ""); final String[] dataSplit = sensorData.split(","); //split the data at the commas UpdateSuspender.using(plotSurface, new Runnable() { //This updater graphs the values @Override public void run() { spliceDataAndAddData(dataSplit); } }); } } }; Looper.loop(); } /** * * @param data string of the udp data * @return true if the data isn't corrupted..aka the correct length */ private boolean dataValid(String data){ return ((data.length() == 1350)); } /** * * @param dataSplit String[] of the entire data * Adds the each sensor data to the IXySeries representing the data */ private void spliceDataAndAddData(String[] dataSplit){ addToSensorSeries(dataSplit, 1); addToSensorSeries(dataSplit, 2); addToSensorSeries(dataSplit, 3); addToSensorSeries(dataSplit, 4); addToSensorSeries(dataSplit, 5); addToSensorSeries(dataSplit, 6); } /** * * @param dataSplit data to split into individual sensor array * must contain only string representations of numbers * @param sensorSeriesNumber which sensors to collect the data points of * Adds the data to the corresponding IXySeries */ private void addToSensorSeries(String[] dataSplit, int sensorSeriesNumber){ sensorSeriesNumber -= 1; //Adds each value individually to the series double xcounter = xCounters.get(sensorSeriesNumber); int i = sensorSeriesNumber; int dataSize = dataSplit.length - 1; String num = ""; while(true){ if(i < 6){ //This is the base case...add the first set of data num = dataSplit[i]; try { if(xcounter > xBound){ xcounter = 0; dataSeriesList.get(sensorSeriesNumber).clear(); } dataSeriesList.get(sensorSeriesNumber).append(xcounter, Double.parseDouble(num)); //appends every number... }catch (Exception e){ //Corrupt data } }else if((i) <= dataSize && i >= 6){ //Will start to get hit after the second time num = dataSplit[i]; try { if(xcounter > xBound){ xcounter = 0; dataSeriesList.get(sensorSeriesNumber).clear(); } dataSeriesList.get(sensorSeriesNumber).append(xcounter, Double.parseDouble(num)); }catch (Exception e){ //Corrupt data } }else{ break; } xcounter++; i += 6; } xCounters.set(sensorSeriesNumber,xcounter); } } _includes_layouts从主题_sass的安装目录复制到项目目录,即C:\Ruby23\lib\ruby\gems\2.3.0\gems\minima-1.2.0

Jekyll将首先检查项目目录中主题的文件。

当然这只是一种解决方法。