macruby open() not working - file-io

The following example is, of course, not my entire app. I have provided the part of it that throws an error:
#!/usr/local/bin/macruby
require 'open-uri'
framework 'ScriptingBridge'
system "mkdir -p ~/.myApp"
system "cp ~/Desktop/image.png ~/.myApp/image.png"
var = open('~/.myApp/image.png', 'w')
The error is:
open: No such file or directory - open() failed (Errno::ENOENT)
Am I missing a library or something?

I am not sure why but if you provide the path without using "~" it works.

This should work:
File.open File.expand_path('~/image.png'), 'w'

Related

XCode: The file “[APP NAME].app” couldn’t be opened because there is no such file

For context, I am encountering this immediately after resolving this issue:
Xcode error: unable to create directory '/[PATH_TO_APP]/[APP_NAME].app' (in target '[TARGET]' from project '[PROJECT]')
Here is the full error details text (with redactions in [] for privacy):
Details
The file “[APP NAME].app” couldn’t be opened because there is no such file.
Domain: NSCocoaErrorDomain
Code: 260
Failure Reason: The file doesn’t exist.
User Info: {
NSFilePath = "/[APP NAME].app";
}
--
The operation couldn’t be completed. No such file or directory
Domain: NSPOSIXErrorDomain
Code: 2
Failure Reason: No such file or directory
--
System Information
macOS Version 10.15.5 (Build 19F101)
Xcode 11.5 (16139)
Running ls -l in the project folder shows the [APP NAME].app now present, but navigating to the same location and selecting the file in Finder shows a "crossed out circle" over the app's icon. Removing the file and building again results in the same thing. I've also tried renaming the project and restarting, etc, to no avail.
NSFilePath = "/[APP NAME].app" feels like a missing or misspelled environment variable.
If the build expects custom environment variable like $(MyBuildDir) to be defined, when it's not, then running a command with $(MyBuildDir)/[APP NAME].app would result in "/[APP NAME].app"
The same is true for if the environment variable misspelled. For example, using $(UBILD_DIR)/[APP NAME].app instead of BUILD_DIR would result in "/[APP NAME].app"

Why Apache dont activate Saxon/C extension?

i have installed Saxon/C extension step by step, by this documentation: http://zf4.biz/blog/installing-the-saxon-c-php-extension
I must install it for PHP5, so this documentation was great. It all works fine and if i use this "php -m | grep saxon -i" command they shows me the extension:
PHP Warning: Module 'Saxon/C' already loaded in Unknown on line 0
Saxon/C
But in the phpinfo(); the extension is not listet on.
Anybody know why this dont works?
This bug issue is related to the issue #4151. The call to the method getUnderlyingValue() should take not arguments
On line 836 of the file php5_saxon.cpp please replace:
obj = ooth->xdmNode->getUnderlyingValue(NULL);
With the following:
obj = ooth->xdmNode->getUnderlyingValue();
Alternatively you can download the following file which contains the fix:
php5_saxon.cpp
You should then be able to build the Saxon/c extension for PHP5. Installation instructions given here http://www.saxonica.com/saxon-c/doc/html/index.html

make tcpflood throws error

I am following this link ( http://www.rsyslog.com/how-to-use-tcpflood/ ) to send messages to rsyslog.
I have cloned the git repository of rsyslog https://github.com/rsyslog/rsyslog.git
While following the link http://www.rsyslog.com/how-to-use-tcpflood/ , I am getting below error while executing "make tcpflood"
root1#atratus06:~/Debashish/rsyslog/tests$ make tcpflood
cc tcpflood.c -o tcpflood
tcpflood.c:86:20: fatal error: config.h: No such file or directory
#include "config.h"
^
compilation terminated.
make: *** [tcpflood] Error 1
Can you please help me with the error, your help will be really appreciated.
I had the same problem. Solution (or rather workaround) was to compile rsyslog...
Just go one directory up, and type:
./configure (you will need to probably install lot of missing stuff here...)
make
make install
After successfully completing all those actions you can go to 'tests' directory and once again type 'make tcpflood'. This time it will work.

File upload issue in CI

I am using CI and facing a problem while uploading file.
It gives a message mentioned below.
==================================================
Severity: Warning
Message: escapeshellarg() has been disabled for security reasons
Filename: libraries/Upload.php
Line Number: 1066
In some answers, I found that it is a server issue and CI has nothing to do with it. Now, is there any way to upload file bypassing the escapeshellarg() or is there any libraries I can use that doesn't require escapeshellarg()?
Please help.
I'm not sure which specific version of CI you're using, but the latest version does a check for that function before using it.
Take a look at the code here:
$cmd = function_exists('escapeshellarg')
? 'file --brief --mime '.escapeshellarg($file['tmp_name']).' 2>&1'
: 'file --brief --mime '.$file['tmp_name'].' 2>&1';
I'd say either upgrade or update the code manually.

getting more information from phantomjs "SyntaxError: Parse error" message

I have a long script that was not written by me. When i run it I get:
phantomjs file.js
SyntaxError: Parse error
i checked out the manual and --help, and the best i could came up with was:
phantomjs --debug=yes file.js
(irrelevant debug statement from CookieJar)
SyntaxError: Parse error
Is there any better way to get at least a line number? or any hint at all?
Run the file with node. If there is a parse error it will report it.
If the file is valid, then node will also try to run it, which will fail if your script depends on something not available in your node environment. So you'll have to ignore any runtime errors.
For example, given hello-world.js:
// Say Hello World twice
for (var i=0; i<2; i++) {
console.log("Hello World") );
}
Run it with node:
node hello-world.js
Output:
/home/someone/somewhere/hello-world.js:3
console.log("Hello World") );
^
SyntaxError: Unexpected token )
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
Your file.js contains an invalid syntax. You should check it with a syntax validator. An online tool which I have created can be one possible solution, check out http://esprima.org/demo/validate.html.
Getting More Information From PhantomJS
The next version of PhantomJS (presumably it will be 1.9.8, whatever comes after 1.9.7) will output errors like this:
SyntaxError: Parse error
http://localhost:9000/scripts/49e8b4f4.vendor.js:8
So that's slightly more useful than the current message.
Unfortunately there are no nightly builds for PhantomJS, so at this time you will need to compile your own version of master if you want to try this.
Debugging Minified files
If you are working with a minified file, often the line number won't be very helpful, and often debugging the un-minified file won't give you the parse error.
To solve this, once you get phantomjs to give you the name of the file, you can use the online demo of Esprima to get an actual parse of your JavaScript code:
http://esprima.org/demo/parse.html
From there, you can enter strategic line breaks to isolate the actual error.
Lint Tools are Sub-optimal for this use-case
A lint tool like jslint or jshint are more opinionated than a real parser, so if you are looking for a very specific syntax error, I would recommend using a real parser, since it will check only for code validity, and not opinionated styling guidelines. I'm not implying lint tools don't have value, just that they won't be as helpful for solving this type of problem.
You can also use syntax linters like jslint or jshint
I received SyntaxError: Parse error while trying to require a custom minified jquery.
I found the solution was to add a blank line to the bottom of jquery.min.js.
Hopefully this helps someone. Using PhantomJS 1.9.7.
I use a simple shell script that will run Phantom normally if no parse errors are found, otherwise it will display the errors. It runs the script through node, checks for SyntaxError in the output and then re-runs node to the terminal if there are errors. It passes all the command line arguments along to Phantom.
Failure mode for this method is if your node parser is significantly different from your Phantom parser. Mine are close enough that it's never been a problem.
usage: ./debug.sh --myArg1 val1 --myArg2 val2
debug.sh:
ERROR=$(node myscript.js 2>&1 >/dev/null | grep "SyntaxError")
if [ "$ERROR" = "" ]; then
echo "No parse errors, running script..."
# run the script with Phantom and pass all the args to it
phantomjs accession.js $*
else
echo "*********************************************************"
echo "********* There are parse errors in the script: *********"
echo "*********************************************************"
# show the errors by running again but not redirecting
node accession.js
fi
I did have the same issue, but none of the solutions worked for me.
I figured that the issue was probably an unsupported syntax by PhantomJS's webkit, since my page was working correctly in current browsers' versions.
What I did was finding out which webkit version PhantomJS was using, for 1.9.* it's here, 34.534.
Now we have to find the Chromium version using the same webkit, or close to it, in here (for Mac).
Ended up going with the Mac OSX 267668 and installed it.
Loaded the same URL as PhantomJS, and here it was, a real Uncaught SyntaxError: Unexpected token with a full stack trace.
Hope that helps.